AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene Button Komponente

Offene Frage von ".chicken"
Ein Thema von .chicken · begonnen am 30. Apr 2007 · letzter Beitrag vom 8. Mai 2007
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.029 Beiträge
 
Delphi 10.4 Sydney
 
#11

Re: Eigene Button Komponente

  Alt 30. Apr 2007, 14:29
Hallo .chicken,

IMHO ist es ohne weiteres - ähnlich wie eine Bool-Variable - möglich, ein TImage als Eigenschaft hinzuzufügen. Je nachdem, was Du machen möchtest achte darauf, ein Create im Konstruktor bzw. im Destruktor ein Destroy hinzuzufügen.

Schau doch mal bei Torry.net vorbei, eventuell findest Du dort ähnliche Komponenten und kannst Dir - nachdem Du verstanden hast, wie die Autoren es machen - dann Deine eigene schreiben.

BTW, ich habe die Grundzüge der Komponentenentwicklung auch erst kürzlich durch Tutorials und hier im Forum (Danke, mkinzler & Co.!) gelernt. Mittlerweile habe auch schon für mich ganz schöne grafische Komponenten entwickelt. Mein Tip: Fange mit nicht-grafischen Komponenten an (einfach mal irgendetwas programmieren, bei mir war es eine FileSearch-Komponente), danach befasse Dich mit Canvas & Co. und erst dann programmiere grafische Komponenten. Fange auch hier mit leichten Aufgaben an, z.B. Label-Komponente mit Rahmen-Eigenschaft, um Dich mit Canvas etwas auseinanderzusetzen und Dich mit den Grundfunktionen vertraut zu machen. Du brauchst nur etwas Geduld, das schaffst Du dann bestimmt! Ich habe ca. 4 Woche gebraucht um anständige Komponenten zu programmieren. Wobei ich bei weitem nicht behaupten möchte daß ich ein Profi darin bin, aber es genügt mir. Ganz wichtig ist es (wie immer gesagt wird), keinen Sourcecode blind abzuschreiben sondern zu verstehen warum der entsprechende Autor etwas so macht. (Grund-)kenntnisse von Canvas sind für grafische Komponenten pflicht, was bei mir die größte "Hürde" war. Hoffe dieser Tip hilft Dir etwas weiter.

Viel Glück,
SCRaT
Michael Kübler
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#12

Re: Eigene Button Komponente

  Alt 30. Apr 2007, 14:41
Ok, die Eigenschaft füg ich folgendermaßen hinzu:
Delphi-Quellcode:
type
  TGraficButton = TButtonControl
  Privat
    FBitmap: TBitmap;
  Public
  Published
    Picture: TBitmap read FBitmap write FBitmap;
end;
Das mit dem OwnerDraw weiss ich noch nicht wirklich wie ich das machen soll.
Und ein PropertyEditor auch nicht....

Ok, danke ebenfalls an Scrat und Blackheart. Ich werde mir mal Codes im Inet angucken und versuchen mich da rein zu arbeiten. Das Problem dabei ist, das viele davon (glaube ich zumindest) immer viele Funktionen eingebaut haben, die ihc nicht benötige und deswegen nicht mehr durch den Code durchblicke. Könnte ihn natürlich abtippen oder kopieren, aber das will ich ja garnicht, wie gesagt ich will ja flexibel werden

Ein schönes Tutorial wär trotzdem nicht schlecht
  Mit Zitat antworten Zitat
zemi

Registriert seit: 1. Mär 2007
1 Beiträge
 
#13

Re: Eigene Button Komponente

  Alt 1. Mai 2007, 23:11
Hey .chicken, warum machst du das nich einfach folgendermaßen:
Delphi-Quellcode:
procedure Tmainform.button_layerMouseEnter(Sender: TObject);
begin
 button.Visible:=false;
 button_hover.Visible:=true;
end;

procedure Tmainform.button_layerMouseLeave(Sender: TObject);
begin
 if(button_hover.Visible)
  then button_hover.Visible:=false
  else button_down.Visible:=false;
 button.Visible:=true;
end;

procedure Tmainform.button_layerMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 button_down.Visible:=false;
 button_hover.Visible:=true;
end;

procedure Tmainform.FormCreate(Sender: TObject);
begin
  with button_layer.Picture.Bitmap do
   begin
    TransparentColor := Canvas.Pixels[1,1];
    TransparentMode := tmFixed;
   end;
end;

procedure Tmainform.button_layerMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 button_hover.Visible:=false;
 button_down.Visible:=true;
end;
Erklärung:
button = Grafik des Buttons
button_hover = Grafik des Buttons, wenn Maus drüber ist (onMouseEnter)
button_down = Grafik des Buttons, wenn Maus geklickt ist (onMouseDown)
button_layer = Unsichtbare Grafik, die Events (onmouseenter,...) regelt

Funktionsprinzip:
Es liegen 4 Grafiken übereinander in selber größe:
- 1 für die normale Ansicht mit dem Wert visible:=true;
- 2 weitere für hover und click effekt mit visible:=false;
- ganz oben die Transparente, also nicht Sichtbare Grafik
Die Transparente Grafik regelt mit ihren Events, welche Button-Grafik unter ihr angezeigt werden soll.

Das kannst du mit einem openPictureDlg verbinden und du hast, was du willst.
Der einzige Nachteil ist, dass für jeden Effekt des Buttons eine eigene Grafik existieren muss!

gruß ZeMi
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#14

Re: Eigene Button Komponente

  Alt 2. Mai 2007, 01:03
Zitat von .chicken:
Delphi-Quellcode:
type
  TGraficButton = TButtonControl
Und wo ist da die Vorfahr-Komponente ? Man kann nicht einfach etwas gleichsetzen und dann einfach hingehen, neues hinzuzufügen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#15

Re: Eigene Button Komponente

  Alt 2. Mai 2007, 05:57
Zitat von .chicken:
Ich würde gerne eine eigene Button Komponente erstellen, die mehr Möglichkeiten zur grafischen Darstellung biete (Bilder etc.)! Ich möchte da einfach selber flexibler werden

Gibts irgendwo ein ausführliches Tutorial für die Erstellung von eigenen Komponenten oder vll speziell eines Buttons? Das was ich gefunden habe war mir einfach nicht ausführlich genug und ging nicht auf genug Dinge ein!
Du solltest mal Sunlight Anhauen. Der hat eine eigene Kompo geschrieben mit x verschiedenen Buttons!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#16

Re: Eigene Button Komponente

  Alt 2. Mai 2007, 15:04
Also danke nochmal für die Antworten! Also vorerst: Komponenten finden, die dem ähneln was ich möchte ist sicher nicht schwer, aber was eigenes auf die Beine zu stellen ist schöner

Ja also so wie du das meintest, Zemi hatte ich das ungefähr vor, nur halt in einer eigenen Komponente (wenn ich dich richtig verstanden habe, dann wolltest du das einfach mit einzelnen Bildern machen?).

Ich werd da ma weiter dran arbeiten

Danke soweit
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#17

Re: Eigene Button Komponente

  Alt 2. Mai 2007, 15:34
Kann mir mal bitte kurz einer erklären wie ich mienem Button die OwnerDraw Eigenschaft zuweise? Habe mir nun verschiedene Beispiele im Internet angesehn, aber nichts gefunden wie ich dem TButton ganz einfach OwnerDraw zuweise...
Das können doch nur 2-3Zeilen Code sein!?
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#18

Re: Eigene Button Komponente

  Alt 2. Mai 2007, 17:21
Zitat von .chicken:
Also vorerst: Komponenten finden, die dem ähneln was fahr zu benennen.ich möchte ist sicher nicht schwer, aber was eigenes auf die Beine zu stellen ist schöner
Genau deshalb gibt es OOP. Dass man das selber machen kann. Also vorhandene Komponenten um gewisse Fähigkeiten zu erweitern. Das geht aber eben nicht ohne den Vorfahr zu benennen. Bisher sieht man nichts davon.
Gruß
Hansa
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#19

Re: Eigene Button Komponente

  Alt 2. Mai 2007, 20:37
Alsooo...mein erster Ansatz war ja
Delphi-Quellcode:
type
  TGraphicButton = class(TGraphicControl) //sry hatte hier das class vergessen
Jetzt denke ich aber ich leite es doch von TButton ab:
Delphi-Quellcode:
type
  TGraphicButton = class(TButton)
So, wie setz ich da denn jetzt OwnerDraw auf True??
Im OnCreate? Und mit welchem Befehl, konnte keinen finden!

Danke soweit!
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#20

Re: Eigene Button Komponente

  Alt 2. Mai 2007, 21:03
Ist Dir klar, dass erst ab jetzt eine Diskussion "wie und was" Sinn macht ? Wir sind schon auf Seite 2 und trotz mehrmaligem Nachfragen ist erst jetzt geklärt, das von TButton abgeleitet werden soll. Alles andere würde wohl auch wenig Sinn machen. Tip am Rande : gucke im SwissDelphiCenter. Da ist ein farbiger Button zu besichtigen. Da sieht man zumindest mal, auf was überhaupt zu achten ist.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:41 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