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 Eigene Komponente mit Buttons (https://www.delphipraxis.net/89723-eigene-komponente-mit-buttons.html)

TheMiller 4. Apr 2007 20:15


Eigene Komponente mit Buttons
 
Hallo,

ich habe schon wieder eine Frage. Und zwar bin ich doch dabei, eine Komponente zu schreiben. Soweit auch schon ganz erfolgreich. Jetzt benötige ich Navigationsschaltflächen (vor und zurück), die ich per Draw aus einer Resource lade. Klappt auch. Doch wie kann ich jetzt registrieren, dass ein Benutzer auf dieses Bild klickt? Ich vermute mal, dass ich dazu noch nicht einmal Draw benutzen darf, sondern eine Button-Komponente einbauen muss, oder?

Danke!

SirThornberry 4. Apr 2007 20:23

Re: Eigene Komponente mit Buttons
 
von welcher Komponente hast du abgeleitet und wie stellst du die Bilder dar?

mkinzler 4. Apr 2007 20:24

Re: Eigene Komponente mit Buttons
 
Ich würde auf jedenfall eine Unterkomponente verwenden

Der_Unwissende 4. Apr 2007 20:24

Re: Eigene Komponente mit Buttons
 
Zitat:

Zitat von DJ-SPM
Und zwar bin ich doch dabei, eine Komponente zu schreiben. Soweit auch schon ganz erfolgreich. Jetzt benötige ich Navigationsschaltflächen (vor und zurück), die ich per Draw aus einer Resource lade.

Hi,
Wenn ich nichts verpasst habe, dann kann man mit der der Funktion Draw nur zeichnen, nicht laden. Die Frage ist hier eher, von was für einer Komponente ist Deine abgeleitet? Wenn Du auf sie zeichnen kannst, dann gibt es bestimmt auch die Ereignisse OnMouseDown und OnMouseUp, über diese bekommst Du die Position einer Mausaktion. Da Du das Bild zeichnest, musst Du nur schauen wo der Maus-click statt findet und was ander der Stelle steht (vor oder zurück), fertig.

Gruß Der Unwissende

TheMiller 4. Apr 2007 20:29

Re: Eigene Komponente mit Buttons
 
Hallo,

meine Komponente ist von TCustomcontrol abgeleitet. Dass man mir Draw nur zeichnen kann, ist ja schon irgendwie klar. Ich weiß nur nicht, welche Unterkomponente ich verwenden soll, damit man bei dem Button keinen Rand mehr sieht. Dieser Button soll nämlich fest ins Design eingebaut werden und nicht "rausstehen".

SirThornberry 4. Apr 2007 20:33

Re: Eigene Komponente mit Buttons
 
dann überschreibe einfach die Methoden MouseDown und MouseUp

TheMiller 4. Apr 2007 20:35

Re: Eigene Komponente mit Buttons
 
Hm naja,

der Button steht ja von Haus aus ein bisschen raus. Dieser pseudo-3D-Effekt soll hier aber (in meinem Fall) vermieden werden. Oder gibt's dafür eine Eigenschaft?

Hansa 4. Apr 2007 20:42

Re: Eigene Komponente mit Buttons
 
Zitat:

Zitat von DJ-SPM
..Jetzt benötige ich Navigationsschaltflächen (vor und zurück), die ich per Draw aus einer Resource lade...

Wäre es da nicht besser, diese Schaltflächen vorzusehen und bei Bedarf zu aktivieren ? Also eine Form vorzubereiten und diese zur Weiterverwendung in die Objektablage zu verfrachten ? :shock:

TheMiller 4. Apr 2007 20:45

Re: Eigene Komponente mit Buttons
 
Das verstehe ich jetzt nicht... Sorry :oops:

Jelly 4. Apr 2007 21:16

Re: Eigene Komponente mit Buttons
 
Zitat:

Zitat von DJ-SPM
Doch wie kann ich jetzt registrieren, dass ein Benutzer auf dieses Bild klickt?

Weil es sich um eine Komponente handelt, so über ein Event, z.B. OnPictureClick.

Dieses Event erzwingen kannst du dann so, soweit du intern über das OnMouseDown Event festgestellt hast, dass das Bild angeklickt wurde:

Delphi-Quellcode:
type
  TOnPictureClick = procedure (Sender : TObject) of object ;  // Weitere Parameter sind auch möglich. TNotifyEvent entspricht dieser Deklaration

TMyComponent = class (TUserControl)
private
  procedure AnyProcedure ;
published
  property OnPictureClick : TOnPictureClick read FOnPictureClick write FOnPictureClick ;
end ;

Das Event OnPictureClick auslösen kannst du in deinem Komponentencode überall etwa so:

Delphi-Quellcode:
procedure TMyComponent.AnyProcedure ;
begin
     if Assigned (OnPictureClick) then
         OnPictureClick (Self) ;
end ;

TheMiller 4. Apr 2007 21:23

Re: Eigene Komponente mit Buttons
 
Stimmt.

Ich glaube, dass ich das so mache. Dankeschön!

Hansa 4. Apr 2007 22:23

Re: Eigene Komponente mit Buttons
 
Zitat:

Zitat von DJ-SPM
Das verstehe ich jetzt nicht... Sorry :oops:

Was denn ? Das Stichwort "Objektablage" ist geliefert und die Delphi-Hilfe ist wohl vorhanden ? Sollte das immer noch unklar sein, dann gehe hin und mache einen Screenshot. Was bei Dir eine Komponente sein soll, das geht wohl auch einfacher.

TheMiller 4. Apr 2007 22:27

Re: Eigene Komponente mit Buttons
 
Ok, die Delphi-Hilfe ist zwar verfügbar, aber unter Vista (noch) nicht aufrufbar. Ich habe jetzt im Constructor 2 Images erstellt und diese dann einem Ereignis zugeordnet.

Danke!

Hansa 4. Apr 2007 22:51

Re: Eigene Komponente mit Buttons
 
Zitat:

Zitat von DJ-SPM
..aber unter Vista (noch) nicht aufrufbar. Ich habe jetzt im Constructor 2 Images erstellt und diese dann einem Ereignis zugeordnet...

Etwas auf das Betriebssystem zu schieben, das zählt nicht. Zumindest bei mir. Flüchten zählt nicht. :mrgreen: folgende grundsäzliche Frage (brauchst auch nichts dazu zu sagen, dann ist der Fall eben erledigt) : besteht die grundsätzliche Möglichkeit, das ganze in einer Form zu kapseln, oder muss das wirklich eine Komponente sein ?

TheMiller 4. Apr 2007 23:08

Re: Eigene Komponente mit Buttons
 
Naja,

müsste schon in einer Komponente sein. Habe es jetzt auch geschafft, wie ich oben beschrieben habe. Die Komponente sollte schon sein. Nur meine Button-Images werden immer im onpaint überschrieben. Wei net, was ich machen soll. Dauernd neu erstellen und neu zeichnen ist auch mist - außerdem flackert's *g*

Hansa 4. Apr 2007 23:26

Re: Eigene Komponente mit Buttons
 
Das Flackern ist das geringste Problem. Wie gesagt : schicke Screenshot, was das Ganze soll. Ich sehekeinen Grund, daraus eine Komponente zu machen. Das wird IMHO unnötig zu kompliziert. Grund : Sub-Sub-Komponenten usw. Da wirst Du den Überblick wohl langsam aber sicher verlieren !

SirThornberry 5. Apr 2007 07:25

Re: Eigene Komponente mit Buttons
 
und wenn dich das flackern stört zeichne einfach selbst auf die Canvas.

uwewo 5. Apr 2007 07:46

Re: Eigene Komponente mit Buttons
 
Zitat:

Zitat von DJ-SPM
Hm naja,

der Button steht ja von Haus aus ein bisschen raus. Dieser pseudo-3D-Effekt soll hier aber (in meinem Fall) vermieden werden. Oder gibt's dafür eine Eigenschaft?

Delphi-Quellcode:
property Ctl3D;

alzaimar 5. Apr 2007 07:55

Re: Eigene Komponente mit Buttons
 
Hmmm. Wieso nimmst Du nicht einfach das Frame-Konzept. Da hast Du dann so etwas wie eine Komponente. Nur viel viel einfacher.


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