AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Komponente erstellen und Ereignis zuweisen
Thema durchsuchen
Ansicht
Themen-Optionen

Komponente erstellen und Ereignis zuweisen

Offene Frage von "pmc"
Ein Thema von Stevie · begonnen am 11. Sep 2003 · letzter Beitrag vom 15. Sep 2003
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#11

Re: Komponente erstellen und Ereignis zuweisen

  Alt 11. Sep 2003, 13:01
zu 3.): Ist immernoch das Prob wegen dem TCPServer. Ich will nämlich schon beim Erstellen einige CommandHandler einbauen, die auf bestimmte Befehle reagieren (das klappt) und Routinen ausführen (das klappt nicht). Es passiert nicht das, was passieren sollte, sprich: Die Routine, die ich im Konstruktor einem CommandHandler zugewiesen hab, wird nicht ausgeführt!
Stefan
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Komponente erstellen und Ereignis zuweisen

  Alt 11. Sep 2003, 13:08
Moin Stevie,

sorry, aber da ich mit den Indys bislang noch nicht viel gemacht habe, kann ich Dir da im Moment nicht mehr so recht folgen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
pmc

Registriert seit: 9. Sep 2003
Ort: Düsseldorf
78 Beiträge
 
Delphi 6 Personal
 
#13

Re: Komponente erstellen und Ereignis zuweisen

  Alt 12. Sep 2003, 17:44
ALso ich hoffe das das hier rein passt!!!

Ich möchte eine Komponente erstellendie von TImage abgeleitet ist!!!
ICh möchte aber noch drei zusätzliche bilder angeben, die je nach ereignis in das image geladen werden.

Bei TImage gibt es ja "Picture" und davon will ich sozusagen noch drei weitere ... wie stelle ich das am besten an???
Woher soll ich wissen was ich denke,
wenn ich noch nicht gehört habe was ich sage?
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#14

Re: Komponente erstellen und Ereignis zuweisen

  Alt 15. Sep 2003, 12:26
Entweder so:
Delphi-Quellcode:
unit MyImage;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, ExtCtrls, Graphics;

type
  TMyImage = class(TImage)
  private
    FPicture1: TPicture;
    FPicture2: TPicture;
    FPicture3: TPicture;
    procedure SetPicture1(const Value: TPicture);
    procedure SetPicture2(const Value: TPicture);
    procedure SetPicture3(const Value: TPicture);
  protected
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property Picture1: TPicture read FPicture2 write SetPicture2;
    property Picture2: TPicture read FPicture3 write SetPicture3;
    property Picture3: TPicture read FPicture4 write SetPicture4;
  end;

procedure Register;

implementation

{ TMyImage }
constructor TMyImage.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FPicture1 := TPicture.Create;
  FPicture2 := TPicture.Create;
  FPicture3 := TPicture.Create;
end;

destructor TMyImage.Destroy;
begin
  FPicture1.Free;
  FPicture2.Free;
  FPicture3.Free;
  inherited Destroy;
end;

procedure TMyImage.SetPicture1(const Value: TPicture);
begin
  FPicture1.Assign(Value);
end;

procedure TMyImage.SetPicture2(const Value: TPicture);
begin
  FPicture2.Assign(Value);
end;

procedure TMyImage.SetPicture3(const Value: TPicture);
begin
  FPicture3.Assign(Value);
end;

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

end.
und dann weist du der Eigenschaft Picture eins von den 3 Pictures zu.

Oder:
Delphi-Quellcode:
unit MyImage;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, ExtCtrls, Graphics;

type
  TMyPicture = class(TCollectionItem)
  private
    FPicture: TPicture;
    procedure SetPicture(const Value: TPicture);
  protected
  public
    constructor Create(ACollection: TCollection); override;
    destructor Destroy; override;
  published
    property Picture: TPicture read FPicture write SetPicture;
  end;

  TMyPictures = class(TOwnedCollection)
  private
    function GetItems(AIndex: Integer): TMyPicture;
    procedure SetItems(AIndex: Integer; const Value: TMyPicture);
    function GetOwnedBy: TPersistent;
  protected
  public
    function Add: TMyPicture;
    constructor Create(AOwner: TPersistent); reintroduce;
    property Items[AIndex: Integer]: TMyPicture read GetItems write SetItems;
    property OwnedBy: TPersistent read GetOwnedBy;
  published
  end;

  TMyImage = class(TImage)
  private
    FIndex: Integer;
    FPictures: TMyPictures;
    procedure SetIndex(const Value: Integer);
    procedure SetPictures(const Value: TMyPictures);
  protected
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property Pictures: TMyPictures read FPictures write SetPictures;
    property Index: Integer read FIndex write SetIndex;
  end;

procedure Register;

implementation

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

{ TMyPicture }

constructor TMyPicture.Create(ACollection: TCollection);
begin
  inherited Create(ACollection);
  FPicture := TPicture.Create;
end;

destructor TMyPicture.Destroy;
begin
  inherited Destroy;
end;

procedure TMyPicture.SetPicture(const Value: TPicture);
begin
  FPicture.Assign(Value);
end;

{ TMyPictures }

function TMyPictures.Add: TMyPicture;
begin
  Result := TMyPicture(inherited Add);
end;

constructor TMyPictures.Create(AOwner: TPersistent);
begin
  inherited Create(AOwner, TMyPicture);
end;

function TMyPictures.GetItems(AIndex: Integer): TMyPicture;
begin
  Result := TMyPicture(inherited Items[AIndex]);
end;

function TMyPictures.GetOwnedBy: TPersistent;
begin
  Result := GetOwner;
end;

procedure TMyPictures.SetItems(AIndex: Integer; const Value: TMyPicture);
begin
  inherited SetItem(AIndex, Value);
end;

{ TMyImage }

constructor TMyImage.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FIndex := -1;
  FPictures := TMyPictures.Create(Self);
end;

destructor TMyImage.Destroy;
begin
  FPictures.Free;
  inherited Destroy;
end;

procedure TMyImage.SetIndex(const Value: Integer);
begin
  if (Value > -1) then
  begin
    if (Value < (FPictures.Count)) then
      FIndex := Value
    else
      FIndex := Pred(FPictures.Count);
    Picture.Assign(FPictures.Items[FIndex].FPicture);
  end
  else
  begin
    FIndex := -1;
    Picture.Assign(nil);
  end;
end;

procedure TMyImage.SetPictures(const Value: TMyPictures);
begin
  FPictures.Assign(Value);
end;

end.
Die meiner Meinung nach beste Lösung ist aber:
Delphi-Quellcode:
unit MyImage;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, ExtCtrls, Graphics;

type
  TMyImage = class(TImage)
  private
    FIndex: Integer;
    FImageList: TImageList;
    procedure SetIndex(const Value: Integer);
    procedure SetImageList(const Value: TImageList);
  protected
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property ImageList: TImageList read FImageList write SetImageList;
    property Index: Integer read FIndex write SetIndex;
  end;

procedure Register;

implementation

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

{ TMyImage }

constructor TMyImage.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FIndex := -1;
  FImageList := nil;
end;

destructor TMyImage.Destroy;
begin
  FreeAndNil(FImageList);
  inherited Destroy;
end;

procedure TMyImage.SetImageList(const Value: TImageList);
begin
  FImageList := Value;
end;

procedure TMyImage.SetIndex(const Value: Integer);
var
  ABitmap: TBitmap;
  APicture: TPicture;
begin
  ABitmap := TBitmap.Create;
  APicture := TPicture.Create;
  if (Value > -1) and Assigned(FImageList) then
  begin
    if (Value < (FImageList.Count)) then
      FIndex := Value
    else
      FIndex := Pred(FImageList.Count);
    FImageList.GetBitmap(FIndex, ABitmap);
    APicture.Bitmap.Assign(ABitmap);
    Picture.Assign(APicture);
  end
  else
  begin
    FIndex := -1;
    Picture.Assign(nil);
  end;
  ABitmap.Free;
  APicture.Free;
end;

end.
Aber solche Komponenten gibt es ja schon...
Stefan
  Mit Zitat antworten Zitat
pmc

Registriert seit: 9. Sep 2003
Ort: Düsseldorf
78 Beiträge
 
Delphi 6 Personal
 
#15

Re: Komponente erstellen und Ereignis zuweisen

  Alt 15. Sep 2003, 18:12
Hallo,

Schönen dank auch!!!!

Jetzt habe ich noch eine Letzte Frage:

Ich möchte gerne eine liste machen können, Ahnlich der Listen wie sie bei Fileboxen benutzt werden um die Filter zu definieren!!!
Ich benötige das selbe (als property versteht sich) nur mit
mehr spalten (ich glaube 7 müsten das sein)!!!

Kann mir da jdm weiterhelfen???
Woher soll ich wissen was ich denke,
wenn ich noch nicht gehört habe was ich sage?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: Komponente erstellen und Ereignis zuweisen

  Alt 15. Sep 2003, 23:52
Moin pmc,

neue Frage - neuer Thread.
Das mit den Images ist wohl durchgerutscht
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 07:38 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