AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

eigene Klasse Button

Ein Thema von Phiennes · begonnen am 19. Mai 2009 · letzter Beitrag vom 9. Sep 2015
Antwort Antwort
Phiennes

Registriert seit: 1. Dez 2008
Ort: Bochum
30 Beiträge
 
#1

eigene Klasse Button

  Alt 19. Mai 2009, 23:49
Hi,

ich möchte unter anderem einen eigenen Button erstellen, der aus einem Image und einem Label besteht.
Wie ich eine Klasse von TImage ableite, steht in meinem schlauen Buch, aber wie kann ich ein Label mit einbinden und das in einer externen Unit?

Also kurz gesagt: Wie kann man zwei Komponenten in einer Komponente vereinen?

Ich habe überall gesucht, finden tue ich nichts.


lG Phiennes
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#2

Re: eigene Klasse Button

  Alt 19. Mai 2009, 23:53
Ich weis nicht, welche Delphi Version Du hast. Bei Delphi 5 ist ein SpinEdit im Samples-Ordner, der das schön zeigt.

Zusammengefasst wird im Constructor (Create) der Haupkomponente (hier wohl der Button) dynamisch die weiteren Controls erzeugt.
  Mit Zitat antworten Zitat
Phiennes

Registriert seit: 1. Dez 2008
Ort: Bochum
30 Beiträge
 
#3

Re: eigene Klasse Button

  Alt 19. Mai 2009, 23:59
Danke ich probier' das mal aus (hab Delphi 7 prof.), wenn ich auf Probleme stoße, melde ich mich nochmal =).
  Mit Zitat antworten Zitat
Phiennes

Registriert seit: 1. Dez 2008
Ort: Bochum
30 Beiträge
 
#4

Re: eigene Klasse Button

  Alt 20. Mai 2009, 00:45
Hmm irgendwie komme ich doch nicht weiter^^.

Das Label wird einfach nicht angezeigt.

Delphi-Quellcode:
unit bkButton;

interface

uses
  SysUtils, Classes, Controls, Graphics, StdCtrls;

type
  TbkButton = class(TCustomControl)
  private
    { Private-Deklarationen }
    Pressed: byte;
    BLabel: TLabel;
  protected
    { Protected-Deklarationen }
    procedure Paint; override;
  public
    { Public-Deklarationen }
    constructor Create(AOwner: TComponent); Override;
  published
    { Published-Deklarationen }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('bkModule', [TbkButton]);
end;

constructor TbkButton.Create(AOwner: TComponent);
VAR xw,yw:Integer;
begin
  xw:=200;
  yw:=22;
  inherited Create (AOwner);
  Pressed:=0;
  SetBounds(0,0,xw,yw);

  BLabel:= TLabel.Create(self);
  BLabel.Caption:='bkButtonX';
end;

procedure TbkButton.Paint;
begin
  canvas.brush.color:=clred;
  canvas.Rectangle(0,0,width,height);
  
  BLabel.Left:=2;
  BLabel.Width:=width-4;
  BLabel.Top:=round(height/2)-6;
  BLabel.Height:=13;
  BLabel.Alignment:=taCenter;
  BLabel.Transparent:=false;
  BLabel.Visible:=true;
  BLabel.Color:=clGreen;
  BLabel.Enabled:=true;
end;

end.
habs rausgefunden es fehlte:
 BLabel.parent:= self;
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: eigene Klasse Button

  Alt 20. Mai 2009, 08:33
Setz mal den Parent des Labels.

Versuch es mal so:
Delphi-Quellcode:
BLabel := TLabel.Create(nil);
BLabel.Parent := Self;

MfG
BAMatze
2. Account Sero
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: eigene Klasse Button

  Alt 20. Mai 2009, 08:52
Und vielleicht noch ein BLabel.Visible := true;
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: eigene Klasse Button

  Alt 20. Mai 2009, 09:28
Zitat von quendolineDD:
Und vielleicht noch ein BLabel.Visible := true;
Stimmt, dass hätte ich auch noch ergänzen können bei meinem Quellcode
2. Account Sero
  Mit Zitat antworten Zitat
Phiennes

Registriert seit: 1. Dez 2008
Ort: Bochum
30 Beiträge
 
#8

Re: eigene Klasse Button

  Alt 20. Mai 2009, 11:16
danke^^
  Mit Zitat antworten Zitat
I3estii

Registriert seit: 26. Aug 2015
8 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: eigene Klasse Button

  Alt 9. Sep 2015, 14:18
Hey Leute,

bin auch gerade an einer Button-Komponente dran.(Nach diesem Beispiel), wie krieg ich es hin dass wenn ich mit der Maus das Label treffe, trotzdem der Button ausgeführt wird?

Edit: Gelöst

Canvas.TextOut(round(width/2-Canvas.TextWidth(Caption)/2), round(height/2)-6, Caption);

Geändert von I3estii ( 9. Sep 2015 um 15:07 Uhr)
  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 19:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf