AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Eigenes Visueles Komponent mit zus. Formular
Thema durchsuchen
Ansicht
Themen-Optionen

Eigenes Visueles Komponent mit zus. Formular

Ein Thema von Dr_C · begonnen am 23. Mär 2014 · letzter Beitrag vom 1. Apr 2014
 
Dr_C

Registriert seit: 13. Jul 2003
6 Beiträge
 
#1

Eigenes Visueles Komponent mit zus. Formular

  Alt 23. Mär 2014, 20:11
Delphi-Version: 7
Ich bin dabei eigenes Komponent erstellen , der unteranderen ein Button beinhaltet.
Der button öffnet ein Formular . Auf ersten Blick scheint dass alles funktionieret , aber es gibt ein ABER :

In der Form , wo man den Komponent benutzt wird folgendes hinzugefügt :
Delphi-Quellcode:
  object TestColorChange1: TTestColorChange
    Left = 332
    Top = 108
    Width = 143
    Height = 43
  end
  object TTestFormColorChange
    Left = 0
    Top = 0
    Width = 320
    Height = 240
    Color = clBtnFace
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    OldCreateOrder = False
    PixelsPerInch = 96
    TextHeight = 13
  end
Der erste object ist richtig , aber der 2te soll gar nicht erscheinen.


Das ist vereinvachte code von dem komponent :
TestColorChange.pas
Delphi-Quellcode:
unit TestColorChange;

interface

uses
  SysUtils, Classes, Controls, ExtCtrls, StdCtrls, uTestFormColorChange ;

type
  TTestColorChange = class(TCustomControl)
  private
    { Private-Deklarationen }
    CCEdit : TEdit ;
    CCButton : TButton ;
    CCShape : TShape ;
     Fenster : TTestFormColorChange ;
    FOnChange: TNotifyEvent;
    procedure ButtonClick(Sender: TObject);
    procedure EditChange(Sender: TObject);
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
     constructor Create( AOwner: TComponent); Override;
     destructor Destroy; override;
  published
    { Published-Deklarationen }
     property OnChange: TNotifyEvent read FOnChange write FOnChange;
  end;

procedure Register;

implementation

constructor TTestColorChange.Create(AOwner: TComponent);
begin
  RegisterClass(TTestFormColorChange);

  inherited Create(AOwner);

  Fenster := TTestFormColorChange.Create(Owner);

  CCEdit := TEdit.Create(Self);
  CCButton := TButton.Create(Self);
  CCShape := TShape.Create(Self);

  insertcontrol(CCEdit);
  insertcontrol(CCButton);
  insertcontrol(CCShape);

  CCEdit.Name := name + 'Edit';
  CCEdit.Top := 1 ;
  CCEdit.Left := 1 ;
  CCEdit.Text := name ;
  CCEdit.OnChange := EditChange ;

  CCButton.Name := Name + 'Button' ;
  CCButton.Left := CCEdit.Width +1 ;
  CCButton.Top := 1 ;
  CCButton.Height := CCEdit.Height +1 ;
  CCButton.Width := CCButton.Height ;
  CCButton.Caption := '...';
  CCButton.OnClick := ButtonClick ;

  CCShape.Name := Name + 'Shape';
  CCShape.Top := CCEdit.Height+3 ;
  CCShape.Left := 1 ;
  CCShape.Height := CCEdit.Height ;
  CCShape.Width :=CCEdit.Width + CCButton.Width;
  height := ( CCEdit.Height * 2 ) + 5 ;
  width := CCShape.Width + 2 ;
end;

destructor TTestColorChange.Destroy;
begin
  CCShape.Free;
  CCButton.Free;
  CCEdit.Free;
  Fenster.Destroy ;
  inherited Destroy;

end;

procedure TTestColorChange.EditChange(Sender: TObject);
begin
  if Assigned(FOnChange) then FOnChange(self);
end;

procedure TTestColorChange.ButtonClick(Sender: TObject);
var tmp : string ;
begin
  tmp := CCEdit.text ;
  if Fenster.Execute( tmp ) then
  begin
    CCEdit.text := tmp ;
  end;
end;

procedure Register;
begin
  RegisterComponents('MyTools', [TTestColorChange]);
end;
end.
Das ist der Formular der von den komponent aufgerufen wird :

uTestFormColorChange.pas
Delphi-Quellcode:
unit uTestFormColorChange;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons;

type
  TTestFormColorChange = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
     class function Execute(var Farbe : string ):Boolean;
  end;

var
  TestFormColorChange: TTestFormColorChange;

implementation

{$R *.dfm}


class function TTestFormColorChange.Execute(var Farbe : string ):Boolean;
begin
 with Create(Application) do
 begin
    Result := (ShowModal=mrOK);
    if Result then
    begin
      Farbe := '123456';
    end;
  end;
end;

end.
uTestFormColorChange.dfm
Delphi-Quellcode:
object TestFormColorChange: TTestFormColorChange
  Left = 581
  Top = 263
  Width = 255
  Height = 132
  Caption = 'TestFormColorChange'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object BitBtn1: TBitBtn
    Left = 36
    Top = 60
    Width = 81
    Height = 25
    TabOrder = 0
    Kind = bkCancel
  end
  object BitBtn2: TBitBtn
    Left = 132
    Top = 60
    Width = 81
    Height = 25
    TabOrder = 1
    Kind = bkOK
  end
end
Probleme macht das erst , wenn man diesen Komponent auf Frames benutzt . bei google habe ich nichts gefunden , was mir weiter helfen konnte . Vielleicht jemand von Euch kann mir helfen.

mfg
Arek

Geändert von Dr_C (23. Mär 2014 um 20:19 Uhr)
  Mit Zitat antworten Zitat
 


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 11:19 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