![]() |
Während Programm läuft
...und weiter geht die fragerei
Hey zuerst möchte ich anmerken das ich mit sehr intensiv mit der suche im interent beschäfftigt habe aber nicht fündig geworden bin, also wende ich mich wieder einmal an das forum meines vertrauens. ich möchte eine komponente (Edit/Label/Memo) welche ich erstellt habe (während das programm läuft) auswählen wenn möglich mit doppleklick auf das Edit/Label/Memo können und dann davon direkt die position ändern können.. mir fallen da nur dinge ein mit ixtausenden variablen und beziehungen könnt ihr mir tipps geben bzw. sagen wie man das möglichst enfach machen kann? |
AW: Während Programm läuft
Du kannst mehrere Komponenten auf dem Formular-Designer markieren und denen alle die gleiche onClick-Prozedur geben. Die Variable Sender ist ein Verweis auf die Komponente auf welche geklickt wurde, die müsstest du nach TComponent (oder TWinControl?) casten, damit du die Positionen ändern kannst.
Beispiel:
Delphi-Quellcode:
Damit schiebst du beim Klick auf jede Komponente (Memo, Button, Edit, ...) das Teil zwei Pixel nach links. Wozu so etwas gut ist weiß ich zwar auch nicht, aber möglicherweise habe ich die Frage auch falsch verstanden...
procedure TForm9.Button1Click(Sender: TObject);
var meinControl: TWinControl; begin if (Sender is TWinControl) then meinControl := (Sender as TWinControl) else Exit; meinControl.Left := meinControl.Left - 2; end; |
AW: Während Programm läuft
ähm ja gut einbisschen schon
und zwar läuft des so ab ich klicken auf einen button (btnMove) -> dann wähle ich eine Komponente aus (txtFeld) -> dann klicke ich auf einen ArrowButton (btnli) -> dann wird das txtFeld (welches aber keinen wirklichen namen hat) nach links verschoben um irgendeinen Faktor (der zb aus einen zahlen txtFeld genommen wird) |
AW: Während Programm läuft
Aber was genau daran ist jetzt dein Problem?
Du hast ja eine klare Vorstellung, was davon kannst du schon einmal umsetzen? Ich habe in den letzten Tagen kein komplettes Profil über deine Kentnisse erstellt (das überlasse ich den 100% verfassungskonform arbeitenden Nachrichtendiensten), aber ich würde glauben, dass du doch daran alles selbst hinbekommen könntest 8-) - Move-Modus mittels Button an- und ausschalten - Jetzt neu: Mit einer einzigen Methode herausfinden, welche Komponente man gedrückt hat - Die eben ausgewählte Komponente nun auf dem Formular verschieben |
AW: Während Programm läuft
Zitat:
hierbei stehe ich auf dem schlauch |
AW: Während Programm läuft
Hast du was ich eben geschrieben habe nicht mal nachgestellt? Ereignis-Methoden wie "onClick" werden immer mit einem Parameter "Sender" aufgerufen. Das ist die Form-Komponente, die gerade geklickt worden ist.
Im Beispiel steht in der Variable meinControl eben diese Komponente dann drin. Du kannst das überprüfen, indem du dir beispielsweise noch einmal dann durch eine Messagebox anzeigen lässt, ob es ein TButton, ein TEdit oder sonstwas war. Füge nach dem "Nach links-Setzen" einfach noch ein
Delphi-Quellcode:
ein und schaue was passiert.
ShowMessage('Geklickt wurde: '+meinControl.ClassName);
|
AW: Während Programm läuft
Au man ach jetzt ich bin echt iwie blöd
also ich muss dem auch nicht sagen auf was geklickt wurde des weiß der automatisch? |
AW: Während Programm läuft
"Er" (wer ist das überhaupt?) weiß erst mal gar nichts.
Die Komponente, die die gerade laufende Ereignis-Methode (in deinem Fall OnClick) aufgerufen hat, wird im Paramter Sender übergeben. Gewöhn dir mal eine exaktere Terminologie an, sonst gibt es nur Missverständnisse.:warn: |
AW: Während Programm läuft
Gut ich werde darauf achten! aber ja das meinte ich gut hat sich das auch geklärt vielen dank :D
:zwinker: |
AW: Während Programm läuft
Zitat:
Man muss alles dreimal lesen, um es zu verstehen! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz