http://www.netgocn.com Original
Alle Schaltflächen haben keine Farbe in Standard -Windows -Programmen. Daher haben alle von Delphi bereitgestellten Tastenkomponenten auch keine Farbattribute.
Hier bietet ich eine Methode zur Herstellung von Ammoniumschaltflächen mit Farbattributen mit benutzerdefinierten Komponenten. Ändern Sie die Farbe nach Belieben während der Entwurfsphase, genau wie die von Delphi selbst bereitgestellten Komponenten (der Code in diesem Artikel erfolgt unter Delphi 4.0).
Erster Schritt
Öffnen Sie Delphi, wählen Sie die Option "Komponente/neue Komponente" des Menüs und füllen Sie manuell im Dropdown-Feld des Vorfahren aus, das das Popup-Dialogfeld hat Vervollständigt es basierend auf diesem. Der Rest des Schreibinhalts im Dialogfeld wird nach Belieben ausgefüllt. Sie müssen jedoch beachten, dass der Klassenname nicht mit dem vorhandenen (einschließlich Ihres angepassten) Klassennamens übereinstimmt, und Sie sollten sich auch daran erinnern, dass es definiert ist Der Installationsort der Komponente (der Inhalt des Dropdown-Felds der Palette-Seite) und der Speicherort der Einheitsdateien auf der Festplatte (der Inhalt des Feldnamens des Einheitsdateinamens), sonst finden Sie sie in Zukunft ? Dieser Artikel nimmt den Standardwert von Delphi Tbutton1 als Klassenname.
Schritt 2
Drücken Sie nach Abschluss der oben genannten Arbeiten die OK -Taste unten und generiert automatisch einen grundlegenden Komponentencode für Sie. (Dieser Artikel wurde nur gelöscht. Alle automatisch generierten Kommentare sollten gespeichert werden.
Schritt 3
Fügen Sie unseren Code im obigen Code -Framework hinzu. Dies ist natürlich die Hauptarbeit, die wir ausführen möchten.
1. Ändern Sie den von Delphi automatisch generierten Teil der von Delphi generierten Einheitsdatei auf:
Typ
Tbutton1 = Klasse (Tbutton)
Privat
Fcolor: tcolor;
Fcanvas: tcanvas;
Isfocused: boolean;
Prozedur setColor (Wert: tcolor);
procedure cndrawitem (var message: twmdrawitem);
geschützt
Prozedur CreateParams (var Params: TCreateParams);
procedure setButtonStyle (adefault: boolean);
öffentlich
Konstruktor create (aowner: tcomponent);
Zerstörer zerstören;
veröffentlicht
Eigenschaft Farbe: tcolor lesen fcolor write setcolor Standard Clwhite;
Ende;
veranschaulichen:
a.
b.
c. Machen Sie die Klasse, auf die sie nicht außerhalb zugegriffen werden können.
2. Das automatische Prozessregister von Delphi kann es ignorieren. Nach seinem Prozesskörper fügen wir den folgenden Code vor Ende manuell hinzu.
// *** Konstruktor************************************************* **********
Konstruktor tbutton1.create (auner: tcomponent);
Beginnen
ererbte erstellen (aowner);
Fcanvas: = tcanvas.create;
Fcolor: = clwhite; // Standardfarbe
Ende;
// *** DESTRUCTUROR************** ********
Destructor Tbutton1.Destroy;
Beginnen
Fcanvas.free;
erbte Zerstörung;
Ende;
// *** Um den Button-Stil zu definieren, muss die Schaltfläche als selbstgekanntes Knopf neu definiert werden.
Prozedur tbutton1.CreateParams (var Params: tcreateParams);
Beginnen
ererbte CreateParams (Params);
mit Params stile: = style oder bs_ownerdraw;
Ende;
// *** Attribut -Schreibmethode* *****************
Prozedur tbutton1.setColor (Wert: tcolor);
Beginnen
Fcolor: = Wert;
Ungültig;
Ende;
// *** Set -Taste Status* ****** ****
Prozedur Tbutton1.SetButtonStyle (Adefault: boolean);
Beginnen
Wenn Adefault <> dann isFocused dann ist
Beginnen
IsFocused: = adefault;
Erfrischen;
Ende;
Ende;
// *** Draw Button*********************************************** ******
Prozedur tbutton1.cndrawitem (var message: twmdrawitem);
var
Isdown, isDefault: boolean;
Arect: Trect;
Flaggen: Longint;
DrawitemStruct: tdrawitemStruct;
WH: TSIZE;
Beginnen
DrawItemStruct: = message.drawitemStruct^;
Fcanvas.Handle: = DrawitemStruct.hdc;
ARECT: = ClientRect;
mit Drawitemstruct
Beginnen
Isdown: = itemState und ods_selected <> 0;
IsDefault: = itemState und ods_focus <> 0;
Ende;
Flags: = dfcs_buttonpush oder dfcs_adjustrect;
Wenn is down ist, flofl: = flags oder dfcs_pushed;
Wenn DrawitemStruct.Itemstate und ODS_DISABED <> 0 dann dann <> 0
Flags: = Flags oder dfcs_inactive;
Wenn isFocused oder isDefault dann
Beginnen
// Zeichnen Sie den Status, wenn die Schaltfläche Fokus erhält
Fcanvas.pen.Color: = clwindowframe;
Fcanvas.pen.width: = 1;
Fcanvas.brush.style: = bsclear;
Fcanvas.Rectangle (ARECT.LEFT, ARECT.TOP, ARECT.Right, ARECT.Bottom);
Inflaterect (Arect, -1, -1);
Ende;
Fcanvas.pen.Color: = clbtnshadow;
Fcanvas.pen.width: = 1;
Fcanvas.brush.color: = fcolor;
Wenn isdown dann beginnen
// Zeichnen Sie den Status, wenn die Taste gedrückt wird
Fcanvas.Rectangle (ARECT.LEFT, ARECT.TOP, ARECT.Right, ARECT.Bottom);
Inflaterect (Arect, -1, -1);
Ende sonst
// zeichne einen unbezahlten Knopf
DrawFrameControl (DrawitemStruct.hdc, ARECT, DFC_Button, Flags);
Fcanvas.FillRect (ARECT);
// Bildunterschrift Textinhalt zeichnen
Fcanvas.font: = self.font;
ARECT: = ClientRect;
WH: = fcanvas.textextent (caption);
Fcanvas.pen.width: = 1;
Fcanvas.brush.style: = bsclear;
Wenn nicht aktiviert, dann dann
Beginnen Sie // Wenn die Schaltfläche fehlschlägt, sollten Sie noch einmal einen Bildunterschriftstext zeichnen
Fcanvas.font.Color: = clBTnHighlight;
Fcanvas.textout ((Breite Div 2)-(Wh.cx Div 2) +1,
(Höhe Div 2)-(wh.cy div 2) +1,
Untertitel);
Fcanvas.font.Color: = clBTnShadow;
Ende;
Fcanvas.textout ((Breite div 2)-(wh.cx div 2), (Höhe div 2)-(wh.cy div 2), caption);
// Zeichnen Sie die gepunktete Linie des inneren Rahmens, wenn Sie den Fokus erhalten
Wenn isFocused und isDefault dann
Beginnen
ARECT: = ClientRect;
Inflaterect (Arect, -4, -4);
Fcanvas.pen.Color: = clwindowframe;
Fcanvas.brush.color: = fcolor;
DrawfocusRect (fcanvas.Handle, Arect);
Ende;
Fcanvas.Handle: = 0;
Ende;
// ** Das Ende* ******************
Ende.
SCHRITT 4: Nach Überprüfung des Fehlers der Komponente/Installationskomponente des Delphi -Menüs. Komponente.
Wenn Sie diesen Artikel vollständig befolgen, finden Sie nach dem Zusammenstellen und richtigen Installation eine Schaltfläche mit demselben Symbol wie Tbutton auf der Registerkarte Proben auf der Delphi -Komponentenbeschriftung. Erstellen Sie ein neues Projekt und platzieren Sie diese Schaltfläche, die wir auf dem Formular verwenden. Wie wäre es damit? Durch seine Farbeigenschaft setzen Sie seine Farbe nach Belieben.
Schließlich verwendet die Schaltfläche Zeichnungsmethode in diesem Artikel eine ähnliche Zeichnungsmethode wie Delphis Tbutton, um ein ähnliches Aktionserscheinungsbild als Delphi -Taste zu erreichen. Wenn Sie jedoch spielen möchten, können Sie alle Text und Grafiken auf die FCANVAS -Leinwand zeichnen, die Sie Ihre Persönlichkeit ausdrücken möchten.
Wenn Sie Fragen haben, senden Sie bitte einen Brief oder hinterlassen Sie eine Nachricht.
Willkommen, die Software dieser Website auszuprobieren: NetGocn (Netzwerk)