Autor Beitrag
Phanuel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

Win XP Pro, Mandrake linux 10.0

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2322
Erhaltene Danke: 1

FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
BeitragVerfasst: Do 21.04.05 12:45 
Schau mal die Tutorials hier im DF durch. Da gibt's massig. ;) Suche in: Delphi-Forum, Delphi-Library KOMPONENTE ERSTELLEN
Phanuel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

Win XP Pro, Mandrake linux 10.0

BeitragVerfasst: Do 21.04.05 19:36 
user profile iconWeBsPaCe hat folgendes geschrieben:
Schau mal die Tutorials hier im DF durch. Da gibt's massig. ;) Suche in: Delphi-Forum, Delphi-Library KOMPONENTE ERSTELLEN


Also ich habe Suche in: Delphi-Forum, Delphi-Library 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Do 21.04.05 19:51 
user profile iconPhanuel 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. :shock: 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. :mrgreen:

P.S. : Stop ! Hier ist was in der Richtung :

www.swissdelphicente...showcode.php?id=2215

Aber leider ist es nicht dreieckig. 8)

_________________
Gruß
Hansa
WeBsPaCe
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2322
Erhaltene Danke: 1

FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 22.04.05 00:43 
user profile iconWeBsPaCe 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. 8) @Motzi : Marktlücke. :mrgreen:

_________________
Gruß
Hansa
Phanuel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

Win XP Pro, Mandrake linux 10.0

BeitragVerfasst: Fr 22.04.05 12:10 
user profile iconhansa hat folgendes geschrieben:


Ein dreieckiger Button ist nun mal nichts für mich. Ich sehe darin keinen produktiven Nutzen. :mrgreen:




Aber leider ist es nicht dreieckig. 8)


Dreieckig war auch nur ein Beispiel und wenn er rund ist oder es nichtmal nen button ist ist es egal, ich will einfach nur etwas gezeichnetes als klasse verwenden.
MasterEvil
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76


D7 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 91

Win XP
D6 Pers
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

Win XP Pro, Mandrake linux 10.0

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 454

Win 98, XP Prof
D3 Prof, D2005 Prof
BeitragVerfasst: Sa 23.04.05 11:02 
Hier steht auch etwas darüber:
www.dsdt.info/tutorials/crashkurs/?page=8

_________________
Auch das schlechteste Buch hat seine gute Seite: die letzte. (John Osborne)
MasterEvil
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76


D7 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 40

Win XP - SP2
D7 Ent.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 895
Erhaltene Danke: 7

Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
BeitragVerfasst: Di 26.04.05 15:43 
user profile iconPhanuel 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

Win XP Pro, Mandrake linux 10.0

BeitragVerfasst: Sa 14.05.05 19:16 
Kriege ich die auch noch irgendwo anders her?
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

Win XP Pro, Mandrake linux 10.0

BeitragVerfasst: So 15.05.05 13:50 
ausblenden 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
//zeichnen

end;
end.


Meinst du es so?
TMY hat aber kein canvas.
oder muss ich da was mit dem dc machen?
TimonWorld
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 397



BeitragVerfasst: So 15.05.05 16:50 
user profile iconPhanuel hat folgendes geschrieben:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 895
Erhaltene Danke: 7

Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
BeitragVerfasst: So 15.05.05 20:19 
user profile iconPhanuel 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... :gruebel: