Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi <Return> in Stringgrid simulieren [vorerst erledigt] (https://www.delphipraxis.net/38585-return-stringgrid-simulieren-%5Bvorerst-erledigt%5D.html)

Hansa 21. Jan 2005 12:47


<Return> in Stringgrid simulieren [vorerst erledigt]
 
Hi,

ich habe hier ein Stringgrid in welches ich manuell Daten eingebe. Ich bestätige die Eingabe mit Return und springe in die nächste Spalte.

Nun habe ich noch eine Suchfunktion. Momentan ist das 2. Form, auf der ich die Suchbegriffe eintrage und suche. Ist das richtige gefunden, so soll in einer Spalte der gefundene Wert eingetragen und sofort weiter in die nächste Spalte gesprungen werden. Ohne noch einmal Return zu drücken.

Delphi-Quellcode:
    frmSuch := TfrmSuch.Create(self);
    frmSuch.ShowModal;
    if frmSuch.gefunden then with sg do begin
      key := VK_RETURN;
      Cells [1,Row] := frmSuch.lbl.Caption;
      Col := 1;
      ch := chr (key);
      sgNrKeyPress(Sender,ch);
      key := ord (ch);
    end;
    frmSuch.Close;
Das ist im OnKeyDown der Hauptform und ich habe den Verdacht, daß es so nicht geht. Also Im OnKeyDown das OnKeyPress explizit aufzurufen. Oder kann man das so machen ? Stand der Dinge ist der, daß es auf einer Form geht und auf anderer nicht. Der Zusammenhang ist mir dabei noch unklar.

Wie sollte man so etwas im Prinzip machen ? Soll ich vielleicht nur eine Form verwenden ? Leider ist der Programmteil schon älter und ich weiß gar nicht mehr, warum überhaupt 2 Forms da sind. :P Ja, ich weiß, immer schön alles kommentieren. :mrgreen:

yankee 21. Jan 2005 13:15

Re: <Return> in Stringgrid simulieren
 
ich habe ein bißchenProbleme dein problem zu verstehen (das habe ch hier irgendwie viel zu oft)
Aber ich probiere es trotzdem mal:
Delphi-Quellcode:
var x,y:integer;
with form1.mystringGrid do
begin
  for x:=0 to ColCount -1 do for y :=0 to RowCount do if pos({Suchwort},Cells[x,y]) > -1 then ResultStringGrid.Cells[{Wohin im Resultgrid auch immer}] :=Cells[x,y];
end;
ist eiegtnlcih ein Einzeiler, passt nur nichtmehr auf den Bildschirm (bei mir zumindest) :-)

Hansa 21. Jan 2005 16:36

Re: <Return> in Stringgrid simulieren
 
Äh Yankee. :gruebel: Es geht darum, etwas zu finden und dieses dem StringGrid richtig mitzuteilen und die entsprechende Zelle zu bestücken, wobei sie eben automatisch bestätigt werden soll. Nicht etwa, um in einem vorhandenen Stringgrid etwas zu suchen. 8) Steht aber alles in der Fragestellung oder wo liegen genau die Unklarheiten ?

shmia 21. Jan 2005 17:11

Re: <Return> in Stringgrid simulieren
 
Delphi-Quellcode:
// in nächste Zeile gehen
StringGrid1.Row := StringGrid1.Row +1;

// in 2. spalte gehen
StringGrid1.Col := 1; // es wird von 0 an gezählt

Hansa 21. Jan 2005 18:51

Re: <Return> in Stringgrid simulieren
 
Sehr geehrter Herr Schmidt, so nicht ! :mrgreen: Nein, ich habe mir heute den halben Mittag Dein Fehler-Tuto Assert usw. durchgelesen, um zu sehen, wie ich der Sache eventuell auf die Spur komme. Der Effekt wird mit Sicherheit durch meinen eigenen Code verursacht. Ich bräuchte nur eine gute Spur. Col := Col +1 nützt da nichts. :P Das kann ich schon. :stupid:

Vielleicht noch was wichtiges : die Cols sind im OI eingestellt. Die Rows werden zur Laufzeit bei Bedarf erweitert.

yankee 21. Jan 2005 22:30

Re: <Return> in Stringgrid simulieren
 
Zitat:

Zitat von Hansa
Äh Yankee. :gruebel: Es geht darum, etwas zu finden und dieses dem StringGrid richtig mitzuteilen und die entsprechende Zelle zu bestücken, wobei sie eben automatisch bestätigt werden soll. Nicht etwa, um in einem vorhandenen Stringgrid etwas zu suchen. 8) Steht aber alles in der Fragestellung oder wo liegen genau die Unklarheiten ?

Sry, aber ich glaube ich kapier mal so garnicht, worum es geht. Wenn du mir den Hintergrund, warum du das überhaupt machen willst mal näher bringst, dann verstehe ich es vielleicht besser...
Bis jetzt aheb cih das so verstanden, dass du zwei StringGrids hast. In einem StringGrid sind gaaanz viele Daten. Wenn du eine Suche startest, sollen die Zellen, wo was gefunden wurde im zweitem StringGrid angezeigt werden...

Hansa 21. Jan 2005 23:24

Re: <Return> in Stringgrid simulieren
 
Zitat:

Zitat von Hansa
...Es geht darum, etwas zu finden und dieses dem StringGrid richtig mitzuteilen und die entsprechende Zelle zu bestücken, wobei sie eben automatisch bestätigt werden soll...

Es ging darum, zu suchen. Wie jetzt am besten ? Deshalb eine 2. Form zum suchen. Mit ein paar Edit-Feldern, die Suchbegriffe einzugeben und im Falle des erfolgreichen Auffindens der Daten, diese im Stringgrid anzuzeigen und automatisch weiter zu machen. Wo jetzt zwei Stringgrids herkommen sollen und gaaaanz viele Daten verstehe ich nicht so ganz. :???:

Man beachte auch den Titel. Das Thema ist "vorerst erledigt". Das ganze geht momentan schon wieder und die Ursache ist auch eingekreist. Problematisch war, daß der Fehler sich schon ziemlich weit fortgepflanzt hatte. Es gilt eben konsequent : einmal OOP immer OOP ! Wer davon abweicht, der kann suchen. Da aber nun klar ist, woran es lag, ist das korrigieren an einer Stelle ausreichend und wirkt sich dann direkt überall aus.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz