| Autor |
Beitrag |
Phanuel
      
Beiträge: 36
Win XP Pro, Mandrake linux 10.0
|
Verfasst: Mi 20.04.05 17:44
Hallo ich habe eine Frage,
und zwar wie entwickle ich die sichtbare Oberfläche eins Buttons,
programmieren und so ist ja nicht das Problem. Aber wenn ich jetzt zb meine eigene Form eines Buttons haben will, sagen wir mal eine dreieckige komme ich an meine Grenzen.
Wie mache ich das?
Wie nehme ich zb vorhanden bitmaps um daraus buttons zu entwickeln?
Kennt einer nen gutes Tutorial?
oder hat jemand die Lösung parat?
Danke für alles
|
|
WeBsPaCe
      
Beiträge: 2322
Erhaltene Danke: 1
FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
|
Verfasst: Do 21.04.05 12:45
Schau mal die Tutorials hier im DF durch. Da gibt's massig. KOMPONENTE ERSTELLEN
|
|
Phanuel 
      
Beiträge: 36
Win XP Pro, Mandrake linux 10.0
|
Verfasst: Do 21.04.05 19:36
Also ich habe KOMPONENTE ERSTELLEN unter Tutorials gesucht, und was du als massig bezeichnest, bezeichne ich als dürftig das sind ja grade mal 5 Stück und es geht immer nur darum das Mainicon zu verändern.
Kann auch sein das ich mich falsch ausgedrückt habe, aber ich will das ganze Aussehen meiner Komponente selber gestalten.
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Do 21.04.05 19:51
Phanuel hat folgendes geschrieben: | | ...massig bezeichnest, bezeichne ich als dürftig das sind ja grade mal 5 Stück... |
Sollte es tatsächlich hier im Forum 5 Tutorials darüber geben, so wäre das schon mehr als gewaltig.  Mit Komponentenentwicklung kennnen sich nämlich nur sehr, sehr wenige aus. Bzw. ist der Lernaufwand sehr hoch und meistens soll das alles von alleine in 5 Min. gehen. Das tut es aber nicht. Insofern weiß ich jetzt auch nicht, wie ich Dir helfen könnte. Ein dreieckiger Button ist nun mal nichts für mich. Ich sehe darin keinen produktiven Nutzen.
P.S. : Stop ! Hier ist was in der Richtung :
www.swissdelphicente...showcode.php?id=2215
Aber leider ist es nicht dreieckig. 
_________________ Gruß
Hansa
|
|
WeBsPaCe
      
Beiträge: 2322
Erhaltene Danke: 1
FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
|
Verfasst: Do 21.04.05 19:57
Das war nur n Tipp.  Hab nicht gesagt, dass es bei dieser Suchanfrage "massig" Threads gibt.  Wenn dir das oder das nicht reicht, dann kann ich dir eigentlich nur empfehlen, dir ein Buch zu kaufen.  Dazu schaust du am Besten in die "Bücher"-Kategorie... 
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 22.04.05 00:43
WeBsPaCe hat folgendes geschrieben: | | ..nicht reicht, dann kann ich dir eigentlich nur empfehlen, dir ein Buch zu kaufen. |
Wird auch nicht viel nützen. Welches geht tief genug darauf ein ? Ich kenne keines.  @Motzi : Marktlücke. 
_________________ Gruß
Hansa
|
|
Phanuel 
      
Beiträge: 36
Win XP Pro, Mandrake linux 10.0
|
Verfasst: Fr 22.04.05 12:10
|
|
MasterEvil
      
Beiträge: 76
D7 Prof
|
Verfasst: Fr 22.04.05 12:26
also theoretisch kannst du alles zu einer komponente machen, was du auch zeichnen kannst
die frage ist nur was ansonsten noch passieren soll ausser das gezeichnete zu betrachten
dafür gibt es bei Delphi Custom Klassen für Komponenten.
Für einen Button wäre das TButtonControl.
Sprich wenn du eine Button Komponente machen willst, leidest du deine Klasse von TButtonControl ab.
Das ganze ist nicht einfach, hab selber vor nicht allzu langer zeit eine CheckBox selber gemacht.
Weiss jetzt nicht ob es geht, aber theoretisch kannst du auch einfach eine Klasse von TButton ableiten und alle Methoden die das aussehen des Buttons bestimmen überschreiben.
Aber keine ahnung ob das überhaupt möglich ist.
Guck dir die Sachen einfach mal an: TButton und TButtonControl.
Wie gesagt: damit kann man ne weile zubringen
Meine Checkbox Komponente findet man übrigens hier
Ist auch Source bei.
greetz
Steffen
|
|
HolgerB
      
Beiträge: 91
Win XP
D6 Pers
|
Verfasst: Fr 22.04.05 12:43
Hallo,
das Wichtigeste ist, dass du deine Komponente von einer Klasse ableitetst, die bereits alle Funktionen hat die Du verwenden möchtest und im Idealfall keine Methoden und Parameter hat, die du nicht gebrauchen kannst.
Wenn du den Button selber zeichen möchtest, kannst du ihn nicht von TButtonControl ableiten, da der z.B. schon viereckig ist oder andere Verahltensweisen hat, die du nicht möchtest.
Schau Dir mal die Klasse TControl an. So weit ich weis sind davon alle sichtbaren Komponenten abgeleitet. Leider habe ich grade kein Delphi zur hand, um nachzuschauen ob wenigstens schon width und heigth vorhanden sind. Das macht vieles einfacher, da du dadurch schon mal eine Zeichenfläche und ein Handle hast.
Dann musst du schauen, welche Methoden zeichnen. Die musst du überschreiben und nach dem Aufruf der inherited Methode deinen Button selber zeichnen.
Grafiken, die auf den Button sollen, kannst du als Resource in die Unit deiner Komponente einfügen.
Für die Entwicklung würde ich vorschlagen, das du ein leeres Formular erstellst in dem deine Komponente dynamisch zur Laufzeit erzeugt wird.
Alles was zu der Komponente gehört packst du in eine zweite Unit. Die kann mann dann recht einfach zu einer eigenständigen Komponente umbauen und vor allem in dem Formular einfach und sicher Testen.
Gruß
Holger
|
|
Phanuel 
      
Beiträge: 36
Win XP Pro, Mandrake linux 10.0
|
Verfasst: Sa 23.04.05 10:21
Okay das klingt ja alles schon sehr vielversprechend aber wo fängt denn das eigentliche Zeichnen an.
Mit dem TControl werde ich mich heute abend mal auseinandersetzen.
|
|
Tobias1
      
Beiträge: 454
Win 98, XP Prof
D3 Prof, D2005 Prof
|
Verfasst: Sa 23.04.05 11:02
_________________ Auch das schlechteste Buch hat seine gute Seite: die letzte. (John Osborne)
|
|
MasterEvil
      
Beiträge: 76
D7 Prof
|
Verfasst: Sa 23.04.05 16:12
eckig wird sowieso alles, musst halt nur das um den kreis oder dreiecke liegende transparent machen, bzw in hintergrund farbe.
nen rundes control gibt es nicht (soweit ich weiss, würde mich wundern).
ausserdem kannst du auch alle anderen funktionen überschreiben die nicht nach deinen vorstellungen sind.
mit TControl würde ich jedenfalls nicht anfangen.
Das hat gar nichts und du musst alles selber machen.
Erstmal kleiner anfangen, das thema ist schon komplex genug.
greetz
Steffen
|
|
dragonlord
      
Beiträge: 40
Win XP - SP2
D7 Ent.
|
Verfasst: Di 26.04.05 12:56
Also wenn Du einen dreieckigen-Button suchst dann nimm die aktuellen JEDI Kompos. Da ist einer dabei.
Gruss
Dragonlord
|
|
Robert.Wachtel
      
Beiträge: 895
Erhaltene Danke: 7
Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
|
Verfasst: Di 26.04.05 15:43
Phanuel hat folgendes geschrieben: | | [...] Kennt einer nen gutes Tutorial? [...] |
Auf Delphi Registered Users Updates www.borland.com/prod...download_delphi.html gibt es bei den Updates für Delphi 7 unter Product PDF Documentation auch eine deutsche Version der Handbücher. Darunter findet sich der Component Writers Guide, eine (deutsche) Einführung in die Erstellung von Komponenten.
|
|
Phanuel 
      
Beiträge: 36
Win XP Pro, Mandrake linux 10.0
|
Verfasst: Sa 14.05.05 19:16
Kriege ich die auch noch irgendwo anders her?
|
|
CenBells
      
Beiträge: 1547
Win 7
Delphi XE5 Pro
|
Verfasst: So 15.05.05 11:36
Hi,
ich auch noch meinen Senf zum Besten geben will
Also, leite deine Komponente von TWinControl ab. Wie man in der Hilfe nachlesen kann, sind von TWinControl alle sichtbaren Fensterelemente abgeleitet, die auf Maus- und Tastatureingaben reagieren können.
Zum Zeichnen nimmst Du dir die Methode Paint vor und überschreibst sie mit Override;
Und dann kannst du so alles Zeichnen, was dir gefällt. Nimm das Canvas und zeichne halt dein Dreieck. Bei einem Mausklick musst du natürlich überprüfen, ob du in dem gezeichneten Bereich bist, oder ausserhalb. Ist der Mauszeiger ausserhalb, reichst du das Event (Den Mausklick) an das Parent weiter.
So Long.
Ken
_________________ Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
|
|
Phanuel 
      
Beiträge: 36
Win XP Pro, Mandrake linux 10.0
|
Verfasst: So 15.05.05 13:50
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| unit Unit2;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
type TMY= class (TWincontrol)
protected procedure PaintWindow(DC: HDC); override;
end; implementation
procedure tmy.PaintWindow; begin
end; end. |
Meinst du es so?
TMY hat aber kein canvas.
oder muss ich da was mit dem dc machen?
|
|
TimonWorld
      
Beiträge: 397
|
Verfasst: So 15.05.05 16:50
Phanuel hat folgendes geschrieben: | Delphi-Quelltext 1:
| type TMY= class (TWincontrol) |
TMY hat aber kein canvas.
oder muss ich da was mit dem dc machen? |
Warum denn TWinControl, kann man da nich was anderes nehmen? Nimm doch TCustomControl (so ist es beispielsweise auch bei der GroupBox von D3 bis D6.
Gruß,
Timon.
|
|
Robert.Wachtel
      
Beiträge: 895
Erhaltene Danke: 7
Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
|
Verfasst: So 15.05.05 20:19
Phanuel hat folgendes geschrieben: | | Kriege ich die auch noch irgendwo anders her? |
Warum? Als registrierter Anwender von D7 Prof. brauchst Du doch nur den Link anzuklicken... 
|
|