Einzelnen Beitrag anzeigen

Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#10

Re: prüfen ob alle stringgrid zellen einen wert haben

  Alt 27. Jan 2006, 10:50
Hallo marabu,

richtig, dann kann ich mit Cols[z].IndexOf('') den Datenbereich überprüfen:
Delphi-Quellcode:
for z := StringGrid1.FixedCols to StringGrid1.ColCount-1 do
  if StringGrid1.Cols[z].IndexOf('') >= StringGrid1.FixedRows then
    showmessage('In Spalte '+IntToStr(z)+' leere Zelle gefunden');
Sollten sich auch innerhalb der FixedRow-Zeilen leere Zellen befinden,
muss/kann man deinen Ansatz verwenden,
oder die leeren Zellen innerhalb der Fixspalten und -zeilen mit einem Leerzeichen belegen.

Um die Wiederverwendbarkeit noch zu erhöhen,
z.B. wenn nur ein Teil-Bereich der eigentlichen Daten geprüft werden soll,
schlage ich folgende Funktion(in Anlehnung an Deine) vor:
Delphi-Quellcode:
function FindEmptyCell_X(sg: TStringGrid; var gr: TGridRect): boolean;
var c,r : integer;
begin
  Result := False;
  with sg do
    for c := gr.Left to gr.Right do
      for r := gr.Top to gr.Bottom do
        if Cells[c,r] = 'then
        begin
          gr := TGridrect(Rect(c,r,c,r));
          Result := True;
          Exit;
        end;
end;
Aufrufbeispiel:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var gr : TGridRect;
begin
  with StringGrid1 do
    begin
    //aufruf mit Bereichsangabe
    gr := TGridRect(Rect(3,2,ColCount-2,RowCount-2));
    //oder auch
    //gr := Selection;
    if FindEmptyCell_X(StringGrid1,gr) then
      begin
      Selection := gr;
      showmessage('Es fehlen Daten in der markierten Zelle');
      end
      else
        showmessage('Daten sind vollständig');
    end;
end;
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat