AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Events von untergeordneter Komponente werden nicht angezeigt

Events von untergeordneter Komponente werden nicht angezeigt

Ein Thema von IIIMADDINIII · begonnen am 20. Feb 2010 · letzter Beitrag vom 20. Feb 2010
Antwort Antwort
IIIMADDINIII
(Gast)

n/a Beiträge
 
#1

Events von untergeordneter Komponente werden nicht angezeigt

  Alt 20. Feb 2010, 16:48
Hallo mein Vater hat ein Problem.

Beim Erstellen einer eigenen Komponente (Tdateiformat) hat er Komponenten kreiert deren Funktion
es ist einen Dateibrowser darzustellen. Nun hat er die Komponenten im Objektinspektor dargestellt aber die dazugehörigen Events fehlen.

Hier ist der Code zu der Komponente:
Delphi-Quellcode:
unit dateiformat;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, FileCtrl;

type
  Tdateiformat = class(TCustomControl)
  private
    { Private declarations }
    con_filename: string;
    con_anz: integer;
    con_strings: Tstrings;
    con_openstndformat: boolean;
    con_drivecombobox: tdrivecombobox;
    con_directorylistbox: tdirectorylistbox;
    con_filtercombobox: Tfiltercombobox;
    con_filelistbox: Tfilelistbox;
  protected
  procedure paint; override;
    { Protected declarations }
  public
    { Public declarations }
    constructor create(aowner: tcomponent); override;
    procedure setfilename(filename: string); virtual;
    procedure setopenstndformat(openstndformat: boolean); virtual;
    procedure setstrings(strings: Tstrings); virtual;
    function openfile(filename: string = ''): boolean;
    procedure openusr(filename: string);
    procedure openusp(filename: string);
    procedure openspe(filename: string);
    procedure opendat(filename: string);
  published
     property align;
     property openstndformat: boolean read con_openstndformat write setopenstndformat;
     property filename: string read con_filename write setfilename;
     property anz: integer read con_anz;
     property strings: Tstrings read con_strings write setstrings;
     property Filelistbox: TFilelistbox read con_Filelistbox;
     property filtercombobox: Tfiltercombobox read con_filtercombobox;
     property directorylistbox: Tdirectorylistbox read con_directorylistbox;
     property drivecombobox: Tdrivecombobox read con_drivecombobox;
    { Published declarations }
  end;

procedure Register;

implementation

procedure Tdateiformat.openusr(filename: string);
begin
  //
end;

procedure Tdateiformat.openusp(filename: string);
var
  filn: Tstringlist;
begin
  filn := Tstringlist.Create;
  filn.LoadFromFile(filename);
  con_strings := filn;
end;

procedure Tdateiformat.openspe(filename: string);
begin
  //
end;

procedure Tdateiformat.opendat(filename: string);
begin
  //
end;

function tdateiformat.openfile(filename: string = ''): boolean;
begin
  result := true;
  if filename = 'then filename := con_filelistbox.FileName;
  if not fileexists(filename) then
  begin
    result := false;
    halt;
  end;
  if con_openstndformat = false then openusr(filename)
  else
  begin
    if uppercase(extractfileext(filename)) = '.USPthen openusp(filename)
    else if uppercase(extractfileext(filename)) = '.SPEthen openspe(filename)
    else if uppercase(extractfileext(filename)) = '.DATthen opendat(filename)
    else if uppercase(extractfileext(filename)) = '.TXTthen openusr(filename)
    else openusr(filename);
  end;
end;

procedure tdateiformat.paint;
begin
 con_drivecombobox.SetBounds(0, 0, round(0.25 * self.Width), 10);
 con_filtercombobox.SetBounds(0, con_drivecombobox.Height + con_directorylistbox.Height, round(0.25 * self.Width), 10);
 con_directorylistbox.SetBounds(0, con_drivecombobox.Height, round(0.25 * self.Width), self.Height - con_drivecombobox.Height - con_filtercombobox.Height);
 con_filelistbox.SetBounds(con_drivecombobox.Width, 0, round(0.75 * self.Width), self.Height);
end;

procedure Tdateiformat.setstrings(strings: Tstrings);
begin
  con_strings.Assign(strings);
  repaint;
end;

procedure Tdateiformat.setopenstndformat(openstndformat: boolean);
begin
  con_openstndformat := openstndformat;
  repaint;
end;

procedure Tdateiformat.setfilename(filename: string);
begin
  con_filename := filename;
  con_drivecombobox.Drive := extractfiledrive(filename)[1];
  con_directorylistbox.Directory := extractfiledir(filename);
  con_filelistbox.FileName := filename;
  repaint;
end;

constructor tdateiformat.create(aowner: tcomponent);
begin
  inherited create(aowner);
  con_drivecombobox := tdrivecombobox.Create(self);
  con_drivecombobox.Parent := self;
  con_directorylistbox := tdirectorylistbox.Create(self);
  con_directorylistbox.Parent := self;
  con_filtercombobox := tfiltercombobox.Create(self);
  con_filtercombobox.Parent := self;
  con_filelistbox := tfilelistbox.Create(self);
  con_filelistbox.Parent := self;
  con_drivecombobox.DirList := con_directorylistbox;
  con_directorylistbox.FileList := con_filelistbox;
  con_filtercombobox.Filter := 'USP-Datei|*.usp|SPE-Datei|*.spe|DAT-Datei|*.dat|TXT-Datei|*.txt|Alle Datein|*';
  con_filtercombobox.FileList := con_filelistbox;
  con_strings := Tstrings.Create;
  repaint;
end;

procedure Register;
begin
  RegisterComponents('Standard', [Tdateiformat]);
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.934 Beiträge
 
Delphi 12 Athens
 
#2

Re: Events von untergeordneter Komponente werden nicht angez

  Alt 20. Feb 2010, 17:25
Welche Events fehlen denn? So wie ich das sehe, deklariert die Komponenente gar keine Events. Sollte es sich dagegen um Events aus TControl/TCustomControl handeln, so müssen diese in der abgeleiteten Komponente als published deklariert werden, damit sie im Object-Inspektor angezeigt werden. Dabei können die Getter und Setter weggelassen werden.

Z.B.

Delphi-Quellcode:
published
  property OnEnter: TNotifyEvent;
  property OnExit: TNotifyEvent;
Uwe Raabe
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Events von untergeordneter Komponente werden nicht angez

  Alt 20. Feb 2010, 18:02
Der Typ wird doch auch mit weg gelassen oder nicht?!
Z.B.
Delphi-Quellcode:
published
  property OnEnter;
  property OnExit;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#4

Re: Events von untergeordneter Komponente werden nicht angez

  Alt 20. Feb 2010, 18:04
Richtig SirThornberry
Lars
  Mit Zitat antworten Zitat
IIIMADDINIII
(Gast)

n/a Beiträge
 
#5

Re: Events von untergeordneter Komponente werden nicht angez

  Alt 20. Feb 2010, 18:15
Mein Vater möchte nicht die Events von Tcustomcontrol haben, sonder die Events von z.B. Tfilelistbox.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Events von untergeordneter Komponente werden nicht angez

  Alt 20. Feb 2010, 19:08
Hallo,

die untergeordneten Komponenten müssen als Subkomponenten gekennzeichnet werden:

Delphi-Quellcode:
con_drivecombobox := tdrivecombobox.Create(self);
con_drivecombobox.SetSubComponent (True);
Gruß Hawkeye
  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 22:59 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