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 Komponenten zur Laufzeit erzeugen und auf Form bewegen!? (https://www.delphipraxis.net/25686-komponenten-zur-laufzeit-erzeugen-und-auf-form-bewegen.html)

torud 10. Jul 2004 13:53


Komponenten zur Laufzeit erzeugen und auf Form bewegen!?
 
Hallo Leute!

Ich würde mir gern ein kleines Tool schreiben, mit dem ich ähnlich wie im Delphi mir aus einer PageControl Komponenten auf ein Form ziehen kann und ihnen Scripte oder sonstige Jobs zuweisen kann.

Die Idee verfolgt mich schon eine Weile und nun will ich sie angehen, habe aber keine Vorstellung davon, wie ich zumindest den ersten Teil davon realisieren könnte. Also ein PageControl zu erzeugen, mit einer Toolbar und ein paar Toolbuttons ist kein Problem. Auch dürfte es kein Problem sein nach Klich auf einen Button ein bestimmtes Control zu erzeugen. Aber wie ist es mit dem bewegen zur Lauzeit???

Gibts es sonst noch Hürden, die ich zu beachten hätte?

ps.: Ich habe nicht vor Delphi neu zu erfinden! :-D

SirThornberry 10. Jul 2004 13:58

Re: Komponenten zur Laufzeit erzeugen und auf Form bewegen!?
 
Du musst dafür sorgen das klicks etc nicht ausgeführt werden. Eine Möglichkeit wäre das Control in ein Panel zu stopfen und darüber ein transparentes TWinControl zu legen welches dann die Move, Click etc. messages abfängt und dann fürs verschieben verantwortlich ist. Die Anker zum Größe ändern und verschieben natürlich nicht vergessen

torud 10. Jul 2004 14:03

Re: Komponenten zur Laufzeit erzeugen und auf Form bewegen!?
 
Hallo Sir,

so etwas habe ich noch NIE gemacht, hast Du noch Zeit für etwas mehr an Informationen ???

Denn mit der Info ein transparentes TWinControl drüber zu legen, kann ich irgendwie nix anfangen. Ich habe auch noch nie einen Button erzeugt und dann die MouseMove und Click-Events in dieser Richtung ausgewertet.

Gibt es irgendwelche BeispielCodes, damit man sich langsam "reinfühlen" kann? :pale:

Meflin 10. Jul 2004 14:11

Re: Komponenten zur Laufzeit erzeugen und auf Form bewegen!?
 
hier am beispiel eines images:
Delphi-Quellcode:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
const sc_dragmove = $f012;
begin
  ReleaseCapture;
  TWinControl(Image1).perform(wm_syscommand,sc_dragmove, 0);
end;

torud 10. Jul 2004 14:13

Re: Komponenten zur Laufzeit erzeugen und auf Form bewegen!?
 
Ich habe die Suche nochmals bedient und bin fündig geworden!

Danke an alle, die gerade im Sprunge waren eine Antwort zu verfassen.

Hier die 2 Links:

Eine eine Lösung aus der Schweiz

Und hier eine fertige Komponente

:)

SirThornberry 10. Jul 2004 14:15

Re: Komponenten zur Laufzeit erzeugen und auf Form bewegen!?
 
@Meflin: Von der Idee her ok aber TImage ist kein TWinControl... ich such mal schnell noch paar sourcen raus bzw. versuch was zusammenzubasteln

[Edit]War mal wieder zu langsam... Die Komponente scheint mir ganz ok zu sein, das vom Swissdelphicenter find ich ni so toll da man dies für jede Componente erstellen muss und die eventuell schon zugewiesenen onMouseDowns etc verloren gehen, was bei der Komponente nicht der Fall zu sein scheint[/Edit]

torud 12. Jul 2004 06:08

Re: Komponenten zur Laufzeit erzeugen und auf Form bewegen!?
 
Hallo nochmals!

Die Komponente, welche ich im vorherigen Posting angegeben habe, ist wirklich Klasse. Mich interessiert jetzt aber noch, wie ich das Verschieben mit so einem Raster wie im Delphi realisieren kan, damit der User ein optisches und reales Hilfsmiteel zum verschieben und "Einrasten" hat.

Soll ich das mit einem Hintergrundbild wie im Delphi machen?
Aber wie kann ich dann ein solches Raster realisieren?

Tyler 14. Jul 2004 19:39

Re: Komponenten zur Laufzeit erzeugen und auf Form bewegen!?
 
der Frage schliess ich mich an... hab zwar einen etwas abweichenderen Code, würde aber auch gerne wissen, wie ich das sog. "Snap-On-Grid" realisieren könnte :)

Delphi-Quellcode:
ReleaseCapture;
TPanel(Sender).perform(WM_SysCommand, $F012, 0);
thx

tyler

SirThornberry 14. Jul 2004 20:31

Re: Komponenten zur Laufzeit erzeugen und auf Form bewegen!?
 
@torud: Das raster bekommst du ganze einfach hinn indem du einfach im OnPaint die Punkte in einem gewissen abstand aufs Form malst.

torud 20. Jul 2004 10:24

Re: Komponenten zur Laufzeit erzeugen und auf Form bewegen!?
 
OK, das beantwortet die Frage, wie ich ein Raster zumindest gemahlt bekomme.Wie aber kann man denn dann die Komponenten an diesem "virtuellen" Raster "einrasten"?

Hm, !??? :roll:

Stevie 20. Jul 2004 10:30

Re: Komponenten zur Laufzeit erzeugen und auf Form bewegen!?
 
Du musst die Position bzw Größe nachbearbeiten, indem du die Werte auf den vorherigen bzw. nächsten Grid-Punkt ausrichtest.

torud 20. Jul 2004 10:39

Re: Komponenten zur Laufzeit erzeugen und auf Form bewegen!?
 
:-D

und wie kann man(n) das realisieren?

Stevie 20. Jul 2004 11:22

Re: Komponenten zur Laufzeit erzeugen und auf Form bewegen!?
 
Dazu musst du dir mal den QC von deiner Komponente angucken und dort, wo die Position gesetzt wird ungefähr folgendes einfügen:
Delphi-Quellcode:
Pos.X := (Pos.X div GridWidth) + IfThen((Pos.X mod GridWidth) > (GridWidth div 2), 1);
Pos.Y := (Pos.Y div GridWidth) + IfThen((Pos.Y mod GridWidth) > (GridWidth div 2), 1);
GridWidth ist der Abstand deines Grids und IfThen ist der Unit Math

Domo Sokrat 21. Jul 2004 08:01

Re: Komponenten zur Laufzeit erzeugen und auf Form bewegen!?
 
Hi torud!

Hier hab' ich noch ein paar Links zu Form-Designer-Kompos, die Dich bestimmt interessieren (Zu finden bei Torry in "Components/Component Packs/Multi Purpose Lite"):
- Extension Library V2.1
- ExtLib Design Time form editing engine V2.2

Und hier noch ein Link zu einem Proggi, das die o. g. Komponenten verwendet:
Inno Setup Form Designer (ISFD)
Im Download-Bereich findest Du auch den Sourcecode von einer Beta-Version...

[Edit]
Hab ich vergessen: Noch ein Link zu einem netten HowTo...
"Resizing and Moving Controls at Run Time"

Und noch was: "CompCtrl" von Udo Juerss. Eine non-visual Komponente, die es
ermöglicht, Controls in der Größe zu verändern und zu verschieben (frei, mit
Sourcecode). Download hier...

So, das war's aber jetzt - glaub' ich :wink: - Viel Spaß damit!
[/Edit]

Vielleicht hilft Dir das Ganze ja ein wenig weiter.

Nalincah 21. Jul 2004 08:13

Re: Komponenten zur Laufzeit erzeugen und auf Form bewegen!?
 
Wenn es was kosten darf: Dream Company

Stevie 22. Jul 2004 07:43

Re: Komponenten zur Laufzeit erzeugen und auf Form bewegen!?
 
Zitat:

Zitat von General2004
Wenn es was kosten darf: Dream Company

Jo, das ist natürlich das NonPlusUltra!!! :wink:

Nalincah 22. Jul 2004 07:52

Re: Komponenten zur Laufzeit erzeugen und auf Form bewegen!?
 
Kennt sich jemand mit Dream aus?? Benutz das auf der Arbeit und hab ab und zu mal ein paar Probleme, aber da es nicht weit verbreitet ist, gibts hier in der DP wenig Chancen Hilfe zu finden.

Stevie 22. Jul 2004 07:59

Re: Komponenten zur Laufzeit erzeugen und auf Form bewegen!?
 
Zitat:

Zitat von General2004
Kennt sich jemand mit Dream aus?? Benutz das auf der Arbeit und hab ab und zu mal ein paar Probleme, aber da es nicht weit verbreitet ist, gibts hier in der DP wenig Chancen Hilfe zu finden.

Bisschen, mach mal nen neuen Thread auf! :wink:

Nalincah 22. Jul 2004 08:02

Re: Komponenten zur Laufzeit erzeugen und auf Form bewegen!?
 
Hab ich


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