AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Zusammenges. Komponente von TPanel mit 1 TImage und 3 TEdit
Thema durchsuchen
Ansicht
Themen-Optionen

Zusammenges. Komponente von TPanel mit 1 TImage und 3 TEdit

Ein Thema von EccoBravo · begonnen am 4. Jan 2007 · letzter Beitrag vom 4. Jan 2007
Antwort Antwort
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#1

Zusammenges. Komponente von TPanel mit 1 TImage und 3 TEdit

  Alt 4. Jan 2007, 15:40
Hallo,

(BDS2006 Architect)

Ich will eine Komponente TEB_Panel=class(TPanel) entwickeln,
die 3 TEdit und 1 TImage enthält.

Diese (zusammengesetzte) Komponente soll die Eigenschaft besitzen, daß

entweder:
die Position der TEdit in jeder Instanz von TEB_Panel zur Laufzeit (unabh.voneinander) änderbar ist

oder:
die Position der TEdit in den verschiedenen Instanzen von TEB_Panel verschieden ist
(diese Positionen werden zur Entwurfszeit festgelegt)

Ich will nämlich an den Entwurf der Klasse TEB_Panel Algoritmen binden, die für alle ihrer Instanzen gleich sind.

Folgendes will ich nämlich vermeiden:
Delphi-Quellcode:
TF_Mess = class(TForm)
      P_KalibPhantom: TPanel;
          B_Kalib_MessStart: TButton;
          B_Kalib_MesStop: TButton;
          I_Kalib: TImage;
          EB_Kalib01: TEdit;
          EB_Kalib02: TEdit;
          EB_Kalib03: TEdit;
      P_HalsPhantom_re: TPanel;
          B_Hals_re_MessStart: TButton;
          B_Hals_re_MessStop: TButton;
          I_Hals_re: TImage;
          EB_Hals_re01: TEdit;
          EB_Hals_re02: TEdit;
          EB_Hals_re03: TEdit;
      P_HalsPhantom_li: TPanel;
          B_Hals_li_MessStart: TButton;
          B_Hals_li_MessStop: TButton;
          I_Hals_li: TImage;
          EB_Hals_li01: TEdit;
          EB_Hals_li02: TEdit;
          EB_Hals_li03: TEdit;
      P_StammPhantom: TPanel;
          B_Stamm_MessStart: TButton;
          B_Stamm_MessStop: TButton;
          I_Stamm: TImage;
          EB_Stamm01: TEdit;
          EB_Stamm02: TEdit;
          EB_Stamm03: TEdit;
...
Eher sollte es so aussehen:

Delphi-Quellcode:
      TP_EB = Class(TPanel);
          B_MessStart: TButton;
          B_MesStop: TButton;
          I_Bild: TImage;
          EB_01: TEdit;
          EB_02: TEdit;
          EB_03: TEdit;
...
var
    Kalib, Hals_re, Hals_li, Stamm : TP_EB;
...
Mein Ziel ist es, diese Liste von Kalib, Hals_li, Hals_re, Stamm... beliebig erweiterbar zu machen.

Wie geht das richtig ?

Ich glaube, meine Formulierung ist verständlich.


Vielen Dank
und ein gesundes neues Jahr

E. B.
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Zusammenges. Komponente von TPanel mit 1 TImage und 3 TE

  Alt 4. Jan 2007, 15:55
Du leitest einfach eine Klasse von TPanel ab und erstellst in dessen Constructor dynamisch die Edits und das TImage
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Zusammenges. Komponente von TPanel mit 1 TImage und 3 TE

  Alt 4. Jan 2007, 16:00
So ganz habe ich deine Ausführungen nicht verstanden, aber meine langjährige Erfahrung
sagt folgendes:
1.) Komponenten, die aus mehreren Controls bestehen sind nicht empfehlenswert, da sie meist
nur für eine bestimmte Anwendung sinnvoll sind. Sie sind nicht universell einsetzbar und daher
keine sinnvollen Komponenten.
2.) wenn mehrmals gleiche Anordnungen von Steuerelementen benötigt werden, dann sollte man Frames verwenden. Bei Frames darf/sollte man nicht weitere Ableitungen bilden; man kommt sonst in Schwierigkeiten.

Also ich würde Frames verwenden.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#4

Re: Zusammenges. Komponente von TPanel mit 1 TImage und 3 TE

  Alt 4. Jan 2007, 16:11
Hallo,
zugrundegelegt habe ich meiner Vorstellung irgend ein Entwurfsmuster, in dem ich mir eine Klasse schaffe und erst zur Laufzeit festlege, wie sie aussehen soll.
(Strategiemuster, Fabrikmuster oder so)

ich will mir einfach unnötige Deklarationsromane und Codewiederholungen sparen, und den Code leicht erweiterbar halten.

So auch mein Vorhaben,
ich schaffe eine Klasse, abgeleitet von TPanel, welche weitere Bestandteile wie ein TImage, 2 TEdit, 2 TButton enthält, die ich zur Laufzeit erst gestalten kann (wie z.B. die Lage der TEdits im Panel).
Ich weiß nicht, ob diese Vorhaben so wirr sind, irgendwie muß es doch soetwas geben?

Danke nochmals

E. B.
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Zusammenges. Komponente von TPanel mit 1 TImage und 3 TE

  Alt 4. Jan 2007, 16:54
Zitat von EccoBravo:
Ich weiß nicht, ob diese Vorhaben so wirr sind, irgendwie muß es doch soetwas geben?
Wie ich schon sagte:
Zitat von Hador:
Du leitest einfach eine Klasse von TPanel ab und erstellst in dessen Konstruktor dynamisch die Edits und das TImage

Wobei Frames natürlich auch eine Möglichkeit wären.
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#6

Re: Zusammenges. Komponente von TPanel mit 1 TImage und 3 TE

  Alt 4. Jan 2007, 17:36
Hallo,

habe es so gemacht,
Nur, leider ist in dem Panel kein TEdit zu sehen.
Was habe ich am unten stehenden Code falsch gemacht?

Delphi-Quellcode:
unit EB_Panel;

interface

uses
  SysUtils, Classes, Controls, ExtCtrls, StdCtrls;

type
  TEB_Panel = class(TPanel)
      E_Edit:TEdit;
  private
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
    constructor Create(aOwner:TComponent);
    
  published
    { Published-Deklarationen }
  end;

procedure Register;


implementation

constructor TEB_Panel.Create;
begin
    try
        E_Edit:=TEdit.Create(self);
        E_Edit.Left:=5;
        E_Edit.Top :=5;
        E_Edit.Show;
    finally
        E_Edit.Free;
    end;
end;

procedure Register;
begin
  RegisterComponents('EB_Panels', [TEB_Panel]);
end;

end.
Vielen Dank

E. B.
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Zusammenges. Komponente von TPanel mit 1 TImage und 3 TE

  Alt 4. Jan 2007, 17:47
Zwei Sachen:
1. Du musst noch das Panel als Parent vom Edit Setzen:
E_Edit.Parent := Self 2.
Delphi-Quellcode:
begin
    try
        [...]
    finally
        E_Edit.Free;
    end;
end;
Du meinst denke ich eher:
Delphi-Quellcode:
begin
    try
        [...]
    except
        E_Edit.Free;
    end;
end;
Denn sonst würde das Edit ja immer freigegeben.

EDIT:
Und ich bin mir nicht mehr ganz sicher aber ich meine, dass Edit.show kannst du dir dann sparen.
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#8

Re: Zusammenges. Komponente von TPanel mit 1 TImage und 3 TE

  Alt 4. Jan 2007, 17:58
Danke,

aber wo füge ich

E_Edit.Parent:=self;
ein?

Danke

E. B.
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:16 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