Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Lazarus (IDE) (https://www.delphipraxis.net/81-lazarus-ide/)
-   -   Während Programm läuft (https://www.delphipraxis.net/176042-waehrend-programm-laeuft.html)

Finki 8. Aug 2013 10:56

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?

Der schöne Günther 8. Aug 2013 11:02

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:
  1. Gewünschte Komponenten auswählen
  2. Im Objektinspektor bei Ereignisse Doppelklick ins "onClick"-Feld
  3. Im Quell-Text-Editor dann beispielsweise so:

Delphi-Quellcode:
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;
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...

Finki 8. Aug 2013 11:36

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)

Der schöne Günther 8. Aug 2013 11:46

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

Finki 8. Aug 2013 11:52

AW: Während Programm läuft
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1223993)
- Jetzt neu: Mit einer einzigen Methode herausfinden, welche Komponente man gedrückt hat

und genau das ist das problem
hierbei stehe ich auf dem schlauch

Der schöne Günther 8. Aug 2013 11:58

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:
ShowMessage('Geklickt wurde: '+meinControl.ClassName);
ein und schaue was passiert.

Finki 8. Aug 2013 12:03

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?

bcvs 8. Aug 2013 12:57

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:

Finki 8. Aug 2013 13:08

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:

TiGü 8. Aug 2013 15:09

AW: Während Programm läuft
 
Zitat:

Zitat von bcvs (Beitrag 1224009)
Gewöhn dir mal eine exaktere Terminologie an, sonst gibt es nur Missverständnisse.:warn:

Und eine vernünftige Zeichensetzung!
Man muss alles dreimal lesen, um es zu verstehen!


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:45 Uhr.
Seite 1 von 3  1 23      

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