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/)
-   -   In Grid-Zelle an Cursor-Position was einfügen (https://www.delphipraxis.net/157249-grid-zelle-cursor-position-einfuegen.html)

Jumpy 5. Jan 2011 07:31

In Grid-Zelle an Cursor-Position was einfügen
 
Frohes neues Jahr erstmal und dann direkt die Frage:

Ich habe verschiedene Buttons erstellt, die mir vordefinierte Worte in eine Grid-Zelle einfügen sollen und zwar an der Stelle an der gerade in der Grid-Zelle der Cursor steht. Aber ich hab keine Ahnung wie und ob das geht. Verliert das Grid nicht den Fokus, wenn ich den Button drücke und "vergisst" dann, in welcher Zelle und an welcher Stelle der Cursor stand?
Idealerweise sollte es auch so sein, dass wenn der Cursor nicht einfach im Text steht, sondern irgend etwas im Text markiert ist, dass dann bei dem Einfügen das markierte ersetzt wird.

Wäre für jede Idee und Schubs in die richtige Richtung dankbar. Wenn's mit dem Grid nicht geht, wäre es denn mit einem Edit-Feld machbar?

Danke,
Jumpy

Bummi 5. Jan 2011 07:49

AW: In Grid-Zelle an Cursor-Position was einfügen
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
       // Celltext setzen
       g.Cells[g.Col,g.row] := 'Test'
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
    // Celltext markierten Text ersetzen (Speedbutton um Focus nicht zu verlieren)
    if (g.ControlCount>0) and (g.Controls[0] is TwinControl) then
         begin
         TEdit(g.Controls[0]).seltext := 'Test';
         {
         Clipboard.SetTextBuf('Test');
         sendmessage(TWinControl(g.Controls[0]).handle,wm_paste,0,0);
         }
         end;

end;

DeddyH 5. Jan 2011 08:03

AW: In Grid-Zelle an Cursor-Position was einfügen
 
Ohne Zwischenablage ließe sich dieser Tipp evtl. noch dahingehend erweitern, dass man SelText des InplaceEditors setzt (nicht ausprobiert, nur ein Gedanke).

Jumpy 5. Jan 2011 08:44

AW: In Grid-Zelle an Cursor-Position was einfügen
 
Danke Bummi,
werd das gleich mal ausprobieren. Vor allem den zweiten Teil. Versteh ich das so, dass
g.Controls[0] die Zelle ist? Ist Item 0 immer das "Aktive" Untersteuerelement eines Steuerelements?

TEdit(g.Controls[0]).seltext := 'Test';
Sind die Zellen (Nachfolger von?) Edits?
Und geh ich recht in der Annahme, dass das so dann auch mit TEdits selbst funktioniert?

Clipboard.SetTextBuf('Test');
sendmessage(TWinControl(g.Controls[0]).handle,wm_paste,0,0);
Das ist dann denk ich die Variante mit der Zwischenablage? Danach hätte ich wahrscheinlich als nächstes gefragt, vor allem der Teil, wie man was einfügt.

Ich bin immer noch sehr beim Delphi (und OOP) lernen, deswegen die Nachfragen.
Danke.

Bummi 5. Jan 2011 09:19

AW: In Grid-Zelle an Cursor-Position was einfügen
 
Zitat:

g.Controls[0] die Zelle ist
der InplaceEditor der Zelle sofern vorhanden...


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:06 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