Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi On-Click-Event (https://www.delphipraxis.net/140907-click-event.html)

Major1337 28. Sep 2009 18:51


On-Click-Event
 
Tag,das Event On-Click soll nach jedem Klick auf den Button die Zeichenkette, in diesem Falle Teststring an Edit1 übergeben.
Bei meinem Code wird der String nur einmal an Edit1.Text gesendet egal wie oft ich den Button klicke.
Hier der Code:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin

Edit1.Text := 'Teststring';

end;
Bitte um Hilfe :mrgreen:



(PS: Hab die selbe Frage auch im Delphi-Forum gestellt)


Mit freundlichen Grüßen
Major

DeddyH 28. Sep 2009 18:57

Re: On-Click-Event
 
Klar, Du berücksichtigst ja auch nicht, was bereits im Edit steht. Häng den neuen Text einfach mit + hintendran.
Delphi-Quellcode:
Edit1.Text := Edit1.Text + 'nächster String';

Major1337 28. Sep 2009 19:03

Re: On-Click-Event
 
was ein simpler Fehler, dennoch nicht wirklich die Lösung.
Der Faktor wie oft man Button 1 klickt ist ja unbekannt und es soll immer der selbe String sein ;)

EDIT: OHH.. FUNKTONIERT DOCH, MERCI DEDDYH

DeddyH 28. Sep 2009 19:05

Re: On-Click-Event
 
Ich hab mich anscheinend unklar ausgedrückt.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + 'Teststring';
end;
Pro Klick sollte da jetzt ein "Teststring" mehr im Edit erscheinen.

Major1337 28. Sep 2009 19:17

Re: On-Click-Event
 
(DeddyH, hoffe du hast das EDIT gelesen)
Wenn es aber jetzt vorkommt das man zu oft auf Button1 geklickt hat, möchte ich auch das man den letzten String mit einem anderen Button löscht, ist das machbar?


Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  Edit1.Text := // Edit1.Text - (Minus) 'Testring' abziehen  
end;

Wie kann man das denn bitteschön verwirklichen? :stupid:

DeddyH 28. Sep 2009 19:20

Re: On-Click-Event
 
Über einen kleinen Umweg geht auch das.
Delphi-Quellcode:
var s: string;
...
s := Copy(Edit1.Text, 1, Length(Edit1.Text) - Length('Teststring'));
Edit1.Text := s;
Ungetestet.

Major1337 28. Sep 2009 19:23

Re: On-Click-Event
 
Getestet, klappt wunderbar. Vielen Dank, bist echt ein schlauer Kerl ;-)
Wobei die Variable doch unötig ist? :)

DeddyH 28. Sep 2009 19:29

Re: On-Click-Event
 
Versuch es mal ohne die Variable ;)
Quatsch, Du hast Recht, ich hatte das vorher mit Delete geschrieben statt mit Copy, das geht nicht ohne die Variable und anschließende Neuzuweisung.

himitsu 28. Sep 2009 19:37

Re: On-Click-Event
 
ob nun mit oder ohne die Variable ist nahezu egal (dank der Referenzzählung)
und Delphi legt eh eine temporäre Variable an, welche es als RückgabeWert (Result) der Funktionen Copy und auch .GetText aka .Text verwendet.

Major1337 29. Sep 2009 08:07

Re: On-Click-Event
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hey, es gibt doch noch ein Problem der Cursor im Editfeld bewegt sich nicht an die letzte Stelle,
obwohl er den String immer hinten dran hängt. Zur verdeutlichung habe ich ein Bild im Anhang.

EDIT: Auf dem Bild sieht man doch nicht den Cursor so gut -.-

DeddyH 29. Sep 2009 08:10

Re: On-Click-Event
 
Dann setz mal SelStart entsprechend.

Major1337 29. Sep 2009 08:19

Re: On-Click-Event
 
Delphi-Quellcode:
Edit1.SelStart := Length(Edit1.Text);
so etwa? :-)

himitsu 29. Sep 2009 08:24

Re: On-Click-Event
 
Zitat:

Zitat von Major1337
so etwa? :-)

nee, so :angel2:
Delphi-Quellcode:
Edit1.SelStart := -1;
(bekommt man aber nur mit, wenn man die WinAPI dahinter etwas kennt :stupid:

Major1337 29. Sep 2009 08:28

Re: On-Click-Event
 
der Cursor bleibt immer noch am Anfang -.-

EDIT: Muss man noch etwas bei uses einfügn?

Major1337 29. Sep 2009 08:33

Re: On-Click-Event
 
Oder gibt es auch eine Möglichkeit es ganz auszublenden? ^^

himitsu 29. Sep 2009 08:37

Re: On-Click-Event
 
Wie/Wo setzt du denn den Cursor?

Wenn du es über einen Button machst und danach erst dem Edit den Fokus zurückgibst, dann wird dieser oftmals (in OnEnter sozusagen) neu gesetzt.

Also erst Fokus zurückgeben und dann Cursor setzen.

Major1337 29. Sep 2009 08:41

Re: On-Click-Event
 
nach deiner Beschreibung etwa so:

VirtKeyBoardEdit.SetFocus;
virtKeyboardEdit.SelStart := -1;

klappt aber nicht :P


Hier springt er zwar ans Ende aber zuerst wieder an den Anfang -.-

VirtKeyBoardEdit.SetFocus;
VirtKeyboardEdit.SelStart := Length(VirtKeyBoardEdit.Text);


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