Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Showmessage bei fehlgeschlagenem Suchvorgang
Sievo - So 26.09.10 00:03
Titel: Showmessage bei fehlgeschlagenem Suchvorgang
Hi ho ich hab noch ne Frage!!
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!
Delete - 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 - So 26.09.10 00:28
Moin und :welcome: im Forum!
Sievo hat folgendes geschrieben : |
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)
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; 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:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm1.Button1Click(Sender: TObject); var row, col: Integer; 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; end; ShowMessage('Leider nichts gefunden'); end; |
cu
Narses
Tilman - So 26.09.10 00:31
Oder man setzt eine Boolean-Variable und fragt die am Ende ab
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.
Sievo - 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 - 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 :)
Sievo - So 26.09.10 02:07
Okay coole sache das versuch ich dann mal :)
Danke dir!
Gerd Kayser - So 26.09.10 04:41
Sievo hat folgendes geschrieben : |
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:
Delphi-Quelltext
1: 2:
| for row :=0 to StringGrid1.RowCount - 1 do for col :=0 to StringGrid1.ColCount - 1 do |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!