AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Button mit eigenem Style

Ein Thema von halinchen · begonnen am 12. Feb 2007 · letzter Beitrag vom 12. Feb 2007
Antwort Antwort
Benutzerbild von halinchen
halinchen

Registriert seit: 13. Jun 2006
508 Beiträge
 
Delphi 2007 Professional
 
#1

Button mit eigenem Style

  Alt 12. Feb 2007, 11:00
Hi!

Ich möchte einen Button mit einem eigenen Style programmieren.
Ich habe in der Hilfe (Delphi 2005 PE) herausbekommen, dass TButton nun aber keinen Canvas besitzt (auch nicht vererbt).

Ich dachte mir das ich eine eigene Komponente schreibe, ich weiß aber nicht wovon ich die ableiten soll.
Am besten wäre wenn ich nur das Design von dem Button ändern müsste und das die Funktionalität schon da wäre.

(Sorry wenn die Frage doof ist, aber ich hab das mit der Komponentenentwicklung noch nicht so richtig geschnallt, ich dachte ich mach das mal praktisch damit ich es verstehe)

halinchen
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Button mit eigenem Style

  Alt 12. Feb 2007, 11:07
Ich leite solche Komponenten die ich selbst gestalten will von TGraphicControl ab
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von halinchen
halinchen

Registriert seit: 13. Jun 2006
508 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Button mit eigenem Style

  Alt 12. Feb 2007, 11:10
Danke für die schnelle Antwort.

Ich hab gerade mal geguckt. Der TSpeedButton wäre doch da optimal, oder soll ich meine Komponente lieber komplett von TGraphicControl abeleiten?
(Eigentlich müsste ich nur die Ränder und die Farbe anders machen)
  Mit Zitat antworten Zitat
Benutzerbild von halinchen
halinchen

Registriert seit: 13. Jun 2006
508 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Button mit eigenem Style

  Alt 12. Feb 2007, 15:07
Meine Komponente sollte auf WM_paint Messages reagieren.
Nur kommt schon in der IDE eine AV.
Kann mir jemand mal sagen was ich grob falsch mache. (Ich schätze es liegt bei WMPaint, darf man da nicht einfach auf den Eigenen Canvas zugreifen? Und stimmt der Constructor?)

Delphi-Quellcode:
unit GraphicControl1;

interface

uses
  SysUtils, Classes, Controls,Graphics,Messages;

type
  TMyButton = class(TGraphicControl)
  private
    { Private-Deklarationen }
    ou,uo,lr,rl,Elo,Ero,Eru,Elu:TBitmap;
    procedure WMPaint(var Msg: TWMPaint); message WM_Paint;
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
    constructor Create(AOwner: TComponent);override;
    destructor Destroy;override;
  published
    { Published-Deklarationen }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [TMyButton]);
end;

constructor TMyButton.Create(AOwner: TComponent);
begin
ou := TBitmap.Create; //Bitmaps anlegen und initilisieren
uo := TBitmap.Create;
lr := TBitmap.Create;
rl := TBitmap.Create;
Elo := TBitmap.Create;
Ero := TBitmap.Create;
Eru := TBitmap.Create;
Elu := TBitmap.Create;
ou.LoadFromFile('ou.bmp');
uo.LoadFromFile('uo.bmp');
lr.LoadFromFile('lr.bmp');
rl.LoadFromFile('rl.bmp');
Elo.LoadFromFile('Elo.bmp');
Ero.LoadFromFile('Ero.bmp');
Eru.LoadFromFile('Eru.bmp');
Elu.LoadFromFile('Elu.bmp');
end;

destructor TMyButton.Destroy;
begin
ou.Free; //Speicher freigeben
uo.Free;
lr.Free;
rl.Free;
Ero.Free;
Elo.Free;
Eru.Free;
Elu.Free;
end;



procedure TMyButton.WMPaint(var Msg: TWMPaint);// message WM_Paint;
var
i:integer;
begin
//Canvas komplett überzeichnen
Self.canvas.brush.color := $E3DFE0; //Ich glaube hier fängt es schon an mit den Fehlern
Self.canvas.brush.Style := bsSolid;
Self.canvas.fillrect(rect(0,0,Self.ClientWidth,Self.ClientHeight));


//Hier zeichnet es was
For i := 15 to Self.ClientWidth - 15 do begin
  Self.Canvas.Draw(i,0,ou);
  Self.Canvas.Draw(i,Self.ClientHeight-uo.Height,uo);
end;
For i := 15 to Self.ClientHeight -15 do begin
  Self.Canvas.Draw(0,i,lr);
  Self.Canvas.Draw(Self.ClientWidth-rl.Width,i,rl);
end;

end;
end.
  Mit Zitat antworten Zitat
Benutzerbild von Tormentor32
Tormentor32

Registriert seit: 27. Okt 2005
Ort: Düsseldorf
369 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Button mit eigenem Style

  Alt 12. Feb 2007, 15:27
Ich glaube da muss in der Create Methode noch ein inherited create; rein (hab grad kein delphi zur Hand ist nur ne Vermutung)

Edit: Oh mann! Ich hab Delphi mit IE geschrieben
Richard Mahr
  Mit Zitat antworten Zitat
Benutzerbild von halinchen
halinchen

Registriert seit: 13. Jun 2006
508 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Button mit eigenem Style

  Alt 12. Feb 2007, 15:39
Danke !

Ähm... einen kurzen Augenblick ging es und beim beenden kam wieder eine AV.
Ich hab also bei Destroy auch noch ein inherited; gesetzt.

Nun sucht Delphi die Bilder auf dem Desktop?!?! Da muss ich erstmal gucken was jetzt wieder nicht stimmt.

EDIT: Perfekt, es funzt. Danke !
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 04:18 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