TGradButton gefällig?

Rund um die LCL und andere Komponenten
EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

TGradButton gefällig?

Beitrag von EugenE »

Ich bin grade dabei ein Button mit einem Verlauf zu erstellen aber nicht so einen langweiligen der von oben bis unten mit 2 farben verläuft.

Ich wollte so einen Button ( http://www.delphipraxis.net/post480935.html#480935 , 1. Screenshot ) auch "haben", aber fand keine Komponente. Also habe ich mich dran gesetzt und so einen Button so halb wegs erstellt ( der Verlauf steht^^ )

Die Komponente ist von TCustomControl abgeleitet.

Wenn man eine Komponente davon ableitet heißt dass das die Komponente dann auch auf Linux/Mac "laufen" würde?

Die Komponente ist noch lange nich fertig aber hier schonmal ein Screenshot sowie ein kleines Test-Programm ( siehe Anhang )

falls es schon so eine Komponente gibt kann ich gleich sofort aufhören daran weiterzuarbeiten :P

Edit: 20.05.08
- Bei Fokussierung wird mit der OverBlendColor gezeichnet
- bei RETURN & SPACE wird OnClick ausgelöst
- Neues TestProgramm ( siehe Anhang)
- Sources (ugradbtn.pas)
- Kann als Lazarus-Komponente installiert werden, jedoch kann man noch keine Einstellungen per IDE machen :(

Edit: 31.05.08
Neues in der Version:
- Kann als Lazarus Komponente installiert werden
- Wenn kein Parent vorhanden ist wird kein Paint ausgeführt
- Anchors mit dabei
- Color für BaseColor genommen
- vllt noch ein paar sachen kp welche xD , hauptsache es funktioniert :-P

Edit: 30.06.08
Download & Info : http://wiki.lazarus.freepascal.org/TGradButton
- der IDE-Bug wurde dank Jesus Reyes gelöst
- man kann die BorderSides auswählen
- FocusRect kann noch dazu gezeichnet werden
- Wordwrap erster ansatz
- Wenn andere Componente auf TGradButton sind kann man von TGradButton das Canvas bekommen und dieses dann bei anderen Componenten als Hintergrund zuverwenden um dann eine art von transparenten componenten zu bekommen^^

Wiki-Page:
http://wiki.freepascal.org/TGradButton

Release 1.4:
downloads.php?view=detail&id=21

Die aktuelle Version von TGradButton kann jetzt auch per von dem CCR-SVN geladen werden.

Dateianhänge
Screenshot ( WindowsXP mit Mac-Style )
Screenshot ( WindowsXP mit Mac-Style )
Zuletzt geändert von EugenE am Mi 13. Aug 2008, 19:56, insgesamt 6-mal geändert.

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: TGradButton gefällig?

Beitrag von theo »

Sieht hübsch aus.

Es gibt hier was ähnliches:
http://files.codes-sources.com/fichier. ... uttons.pas
Das läuft mit kleinen Änderungen auch auf Lazarus.
Aber das Ding ist nicht perfekt , bezüglich Fokussierung, Tab Navigation etc.
(Kompon. ist von TGraphicControl abgeleitet, was ich nicht ideal finde)

Das machst du bestimmt besser ;-)

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: TGradButton gefällig?

Beitrag von Euklid »

Sehr schöne Buttons!

EugenE hat geschrieben:Wenn man eine Komponente davon ableitet heißt dass das die Komponente dann auch auf Linux/Mac "laufen" würde?


Wenn deine Komponente ausschließlich LCL-Befehle (d.h. keine WinAPI u.s.w.) verwendet, sollte sie auch unter Linux/Mac laufen.


Gruß, Euklid

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Re: TGradButton gefällig?

Beitrag von EugenE »

theo hat geschrieben:Aber das Ding ist nicht perfekt , bezüglich Fokussierung, Tab Navigation etc.


Gibt es beispiele von diesen Sachen? weil das wäre meine erste komponente :P

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: TGradButton gefällig?

Beitrag von theo »

EugenE hat geschrieben:Gibt es beispiele von diesen Sachen? weil das wäre meine erste komponente :P


Ich wollte damit sagen, dass auch ein Button etwas mehr können sollte, als nur ein Rechteck darstellen und auf OnClick reagieren.

Schau dir mal den TButton an. Der zeichnet sich ja auch anders, wenn er den Eingabefokus hat.
mit Tab sollte man von Control zu Control springen können und mit Enter sollte das OnClick Ereignis auch ausgelöst werden.

Du kannst natürlich einfach sagen, dass dir das für deinen Button egal ist.
Ich wollte es nur erwähnt habe, damit du dir das überlegen kannst.

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von EugenE »

wie kann ich denn feststellen ob die komponente fokussiert ist oder nicht?
oder wie kann ich es machen das wenn ich tab drücke irgendwann meine komponente ausgewählt wird?

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

EugenE hat geschrieben:wie kann ich denn feststellen ob die komponente fokussiert ist oder nicht?
oder wie kann ich es machen das wenn ich tab drücke irgendwann meine komponente ausgewählt wird?


Bei TCustomControl Descendants müsste das eigentlich gehen indem man
TabStop:=true;
TabOrder auf einen Wert setzt (kann sein dass das in der IDE automatisch geht, aber nicht, wenn du denn Button im Code createst.).

Dann kriegst du mit OnEnter (oder auf tieferem Level mit der entsprechenden Message) Wind davon und kannst dein Control als "Focused" zeichnen.

Probier's halt, ich weiss es auch nicht genau.

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von EugenE »

Neue Version:
- Bei Fokussierung wird mit der OverBlendColor gezeichnet
- bei RETURN & SPACE wird OnClick ausgelöst
- Neues TestProgramm ( siehe Anhang)
- Sources (ugradbtn.pas beim TestProgramm2 mit enthalten)
- Kann als Lazarus-Komponente installiert werden, jedoch kann man noch keine Einstellungen per IDE machen :(

Wie kann ich Einstellungen per IDE machen? irgendwas mit RTTI oder sowas oder?^^ aber kp was ich da machen soll, gibt es dafür beispiele irgendwo??^^

Bei Fehlern oder Vorschlägen einfach posten :)

Vielspaß mit dem Button :)

MfG,
Eugen

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

EugenE hat geschrieben:- Kann als Lazarus-Komponente installiert werden, jedoch kann man noch keine Einstellungen per IDE machen :(

Wie kann ich Einstellungen per IDE machen? irgendwas mit RTTI oder sowas oder?^^ aber kp was ich da machen soll, gibt es dafür beispiele irgendwo??^^


Published

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

also wenn man die caption zuweist bevor das parent gesetzt ist ruft er paint auf und es meldet einen fehler.

Ich habe deine kompo ein bisschen ergänzt und frage beim zeichnen (nach inherited):

Code: Alles auswählen

if not HasParent then
    exit;


damit klappts.

Danke

Bye
Alexander

PS: Spitzen Kompo!
Zuletzt geändert von alexander am Di 27. Mai 2008, 21:36, insgesamt 2-mal geändert.
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

ahh ja und anchors vermisse ich... glaube muss man aber nur die property hinzufügen....

und könntest du die BaseColor vielleicht einfach Color nennen? Dann wäre es analoger zum Button.....


Ahh und da fällt mir nochwas auf... wenn man ein neues projekt erstellt, den Button drauf macht, abspeichert und nach dem laden noch einen button drauf macht wird er nicht mehr richtig gezeichnet.....
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von EugenE »

alexander hat geschrieben:ahh ja und anchors vermisse ich... glaube muss man aber nur die property hinzufügen....

und könntest du die BaseColor vielleicht einfach Color nennen? Dann wäre es analoger zum Button.....


Ahh und da fällt mir nochwas auf... wenn man ein neues projekt erstellt, den Button drauf macht, abspeichert und nach dem laden noch einen button drauf macht wird er nicht mehr richtig gezeichnet.....


1. Was sind Anchors und wie arbeitet man mit denen?^^

2. bei der nächsten Version wird Color auch benutzt

3. mit nicht mehr richtig zeichnen meinst du da die ecken? ja ich weiß nicht wie man die CustomControls transparent machen kann^^

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

ich antworte in deinem Thread ok? Das passt da besser.
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

EugenE hat geschrieben:1. Was sind Anchors und wie arbeitet man mit denen?^^
Einfach die Property Anchors hinzufügen. Dann kann man die z.B. rechte Seite der Kompo in einem konstanten Abstand zum Rechten Parent-Rand halten. Sehr praktisch.

EugenE hat geschrieben:2. bei der nächsten Version wird Color auch benutzt
ok

EugenE hat geschrieben:3. mit nicht mehr richtig zeichnen meinst du da die ecken? ja ich weiß nicht wie man die CustomControls transparent machen kann^^

Nein ich meine, dass so seltsam es klingt, wenn man dein Button raufmacht, abspeichert und wieder öffnet und dann eine beliebe Kompo darauf tut, alles nicht mehr richtig gezeichnet wird....
Ich habe es bis jetzt nur bei dieser Kompo das Verhalten bemerkt....
Ich habe auch keinen blassen Schimmer wieso eine Kompo soetwas machen kann.... Aber ist ist einfach nicht erträglich...

Gruß Alexander
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von EugenE »

alexander hat geschrieben:Nein ich meine, dass so seltsam es klingt, wenn man dein Button raufmacht, abspeichert und wieder öffnet und dann eine beliebe Kompo darauf tut, alles nicht mehr richtig gezeichnet wird....
Ich habe es bis jetzt nur bei dieser Kompo das Verhalten bemerkt....
Ich habe auch keinen blassen Schimmer wieso eine Kompo soetwas machen kann.... Aber ist ist einfach nicht erträglich...

Gruß Alexander


ich habe das problem bisher noch nicht gehabt :( von daher kp was das ist , vllt irgendwas spezifisches von TCustomControl

Antworten