Autor Beitrag
Sievo
Hält's aus hier
Beiträge: 15



BeitragVerfasst: So 26.09.10 00:03 
Hi ho ich hab noch ne Frage!!

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.Button1Click(Sender: TObject);
begin
for row:=0 to StringGrid1.RowCount do
for col:=0 to StringGrid1.ColCount do begin
if StringGrid1.Cells[col,row]=Edit3.Text then begin
StringGrid1.Col:=Col;
StringGrid1.Row:=Row;
end
else

ShowMessage('Leider nichts gefunden');
 end;
end;


Habe diese Suchfunktion eingebaut um sachen aus einer StringGrid Tabelle zu suchen!

Ist auch alles toll soweit aber ich hab dann das else eingefügt und die showmessage wenn nichts gefunden wurde
Problem ist das Fenster öffnet sich und geht nicht wieder weg :) also ich muss das Programm über den Taskmanager schließen
Kann ich das irgendwie begrenzen auf ein Fenster?


Vielen Dank!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 26.09.10 00:26 
Was für ein Fenster geht nicht mehr weg? Der Dialog? Der ist modal und muss mit klicken auf die OK-Schaltfläche geschlossen werden. Oder was meinst du jetzt?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 26.09.10 00:28 
Moin und :welcome: im Forum!

user profile iconSievo hat folgendes geschrieben Zum zitierten Posting springen:
ich hab dann das else eingefügt und die showmessage wenn nichts gefunden wurde
Problem ist das Fenster öffnet sich und geht nicht wieder weg :)
Doch, irgendwann (genauer: wenn alle Zeilen durchsucht wurden) "geht" die Dialogbox wieder weg. ;) Warum? :gruebel: Wenn du deinen Quelltext mal vernünftig formatiert hättest (ist "Quelltexteinrücker" jetzt sowas wie "Saunauntensitzer"? :|), würdest du auch sehen, warum: 8)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Button1Click(Sender: TObject);
  var
    row, col: Integer; // solltest du hier nicht eine Compilerwarnung erhalten haben, dass Schleifenvariablen lokal sein sollten?
begin
  for row := 0 to StringGrid1.RowCount do
    for col := 0 to StringGrid1.ColCount do begin
      if (StringGrid1.Cells[col,row] = Edit3.Text) then begin
        StringGrid1.Col:=Col;
        StringGrid1.Row:=Row;
      end
      else
        ShowMessage('Leider nichts gefunden');
    end;
end;
Die Lösung ist allerdings nicht durch ein bischen Code-Umstellen machbar, ich schlage das mal so vor:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.Button1Click(Sender: TObject);
  var
    row, col: Integer; // solltest du hier nicht eine Compilerwarnung erhalten haben, dass Schleifenvariablen lokal sein sollten?
begin
  for row := 0 to StringGrid1.RowCount do
    for col := 0 to StringGrid1.ColCount do
      if (StringGrid1.Cells[col,row] = Edit3.Text) then begin
        StringGrid1.Col:=Col;
        StringGrid1.Row:=Row;
        Exit; // Prozedur verlassen, Suchbegriff gefunden
      end;
  ShowMessage('Leider nichts gefunden'); // wenn wir hier ankommen, wurde nichts gefunden
end;
cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: So 26.09.10 00:31 
Oder man setzt eine Boolean-Variable und fragt die am Ende ab
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var gefunden: boolean;
begin
gefunden := false;
for ...
   if ... then gefunden := true;
...
if not gefunden then ShowMessage('Nicht gefunden');
end;


Falls du nach der ShowMessage noch Code ausführen willst kannst du das so machen, weil nach exit() verlässt du die Prozedur und kannst nichts mehr ausführen.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Sievo Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: So 26.09.10 01:51 
Vielen Dank für die Zahlreichen Antworten! :)

Und vielen Dank Narses!! Das funktioniert alles nur jetzt hab ich das Problem das er mir direkt den ersten fund anzeigt also das Startdatum der Kw und dann ist leider nicht die ganze KW im Sichtfenster!

Bei meinem oben hatte ich den letzten Tag obwohl ja eigentlich nicht viel anders war?
Versteh ich also nicht kann mir das einer erklären?
Und vllt auch sagen ob man das noch einstellen kann das er den letzten Eintrag nehmen soll? also das letzte Datum der KW!?

Vielen Dank!!
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: So 26.09.10 01:56 
Ja das ist genau das was ich meine: du rufst exit() auf, und sofort geht das Programm aus der Prozedur raus, und der Rest wird nicht mehr ausgeführt. Mache es also so wie ich gesagt habe, und richte eine Boolean-Variable ein, und lass exit() dafür weg :)

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Sievo Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: So 26.09.10 02:07 
Okay coole sache das versuch ich dann mal :)

Danke dir!
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: So 26.09.10 04:41 
user profile iconSievo hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
for row:=0 to StringGrid1.RowCount do
for col:=0 to StringGrid1.ColCount do begin

Das sollte doch wohl eher heißen:
ausblenden Delphi-Quelltext
1:
2:
for row :=0 to StringGrid1.RowCount - 1 do
for col :=0 to StringGrid1.ColCount - 1 do