AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Komponente erstellen (TMyRadioGroup)

Ein Thema von MaBuSE · begonnen am 31. Mär 2014 · letzter Beitrag vom 3. Apr 2014
 
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Komponente erstellen (TMyRadioGroup)

  Alt 31. Mär 2014, 13:47
Delphi-Version: XE
Hallo,
ich habe folgende PN bekommen:
Zitat:
Hallo aus Aachen,
ich brauche eine erweiterte Komponente in Delphi - habe aber leider nicht DIE Ahnung.
Ziel: "TRadioGroup" mit zusätzlich einem "TButton" (z.B. ObenLinks im Rahmen) zum "un-checken" aller "RadioButtons".
Schriebest Sie/Du so etwas als AuftragsArbeit? ...die Kosten?
MfG
...
Da ich Fragen, die ins Forum gehören nicht per PN beantworte, hier nun für alle

Das Problem ist so klein, das es keine Auftragsprogrammierung wert ist.
Du leitest eine Komponente (z.B. TMyRadioGroup) von TRadioGroup ab und erzeugst im Constructor einen Button oder was Du auch immer magst. Dann nur noch die Eigenschaften entsprechend initialisieren und fertig.
Im Destructor wird der wieder entfernt.

Wenn Du auch von "außen" also dem Objekt-Inspektor auf die Eigenschaften des Buttons zugreifen möchtest, so reicht dazu eine Zeile property name: ObjektTyp read Variable; So könnte es z.B. aussehen:
Delphi-Quellcode:
unit MyRadioGroup;

interface

uses
  SysUtils, Classes, Controls, StdCtrls, ExtCtrls;

type
  TMyRadioGroup = class(TRadioGroup)
  private
    FClearButton: TButton;
  protected
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure ClearButtonClick(Sender: TObject);
  published
    // Eigenschaft im Objektinspektor
    property ClearButton: TButton read FClearButton;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Beispiele', [TMyRadioGroup]);
end;

{ TMyRadioGroup }

procedure TMyRadioGroup.ClearButtonClick(Sender: TObject);
begin
  // Auswahl Löschen
  ItemIndex := -1;
end;

constructor TMyRadioGroup.Create(AOwner: TComponent);
begin
  inherited;
  // ClearButton anlegen und initialisieren
  FClearButton := TButton.Create(Self);
  FClearButton.Name := 'ClearButton';
  FClearButton.Parent := Self;
  FClearButton.Caption := '-';
  FClearButton.Width := 14;
  FClearButton.Height := 14;
  FClearButton.Top := 0;
  FClearButton.Left := Width - FClearButton.Width;
  FClearButton.Anchors := [akTop, akRight];
  FClearButton.OnClick := ClearButtonClick;
end;

destructor TMyRadioGroup.Destroy;
begin
  // ClearButton Freigeben
  FClearButton.Free;
  FClearButton := nil;

  inherited;
end;

end.
Wie wird nun so eine Kompoente installiert?
Da zu erstellen wir uns ein Package (z.B. MyComponents.dpk) in dem wir die Komponente (z.B. MyRadioGroup.pas) einbinden.

So könnte es z.B. aussehen:
Delphi-Quellcode:
package MyComponents;

{$R *.res}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO ON}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION ON}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES OFF}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$DESCRIPTION 'Package zum Einbinden meiner Komponenten (TMyRadioGroup)'}
{$IMPLICITBUILD ON}

requires
  rtl,
  vcl;

contains
  MyRadioGroup in 'MyRadioGroup.pas';

end.
Die beiden Dateien habe ich Dir nochmal als Anhang zur Verfügung gestellt.
In ein Verzeichnis speichern.
*.dpk aufrufen.
Im Projektmanager auf MyComponents.bpl rechtsklicken und "Installieren" wählen.
Es wurd nun kompiliert und installiert.
Nun ist die Komponente im der Komponentenpalette unter Beispiele zu finden und kann verwendet werden.

ABER: Bevor das Projekt, das die Komponente verwendet kompiliert werden kann muss der Suchspfad in den Optionen um das Verzeichnis mit den *.dpk und *.pas oder *.dcu, *.dpc und *.bpl Dateien erweitert werden.
Sonst gibt es nur die Fehlermeldung, dass er die Datei MyRadioGroup nciht gefunden hat.

viel Spaß.

Ach ja zum Thema:
Code:
Schriebest Sie/Du so etwas als AuftragsArbeit? ...die Kosten?
Falls wir uns mal auf den Delphi-Tagen sehen, kannst du mir ja eine Cola ausgeben

MaBuSE
Angehängte Dateien
Dateityp: zip MyRadioGroup.zip (82,5 KB, 19x aufgerufen)
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  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 18:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz