Delphi-PRAXiS
Seite 1 von 2  1 2      

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 ;


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:29 Uhr.
Seite 1 von 2  1 2      

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