AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ein TFrame als published property?

Ein Thema von David Martens · begonnen am 19. Feb 2010 · letzter Beitrag vom 22. Feb 2010
Antwort Antwort
David Martens

Registriert seit: 29. Sep 2003
205 Beiträge
 
Delphi XE Enterprise
 
#1

Ein TFrame als published property?

  Alt 19. Feb 2010, 13:55
Hallo,

langsam bin ich am verzweifeln. Ich schreibe eine nicht sichtbare Komponente die grundlegende Funktionen bereitstellt.

Folgende Situation:

Ein Formular enthält:
- ein "Grid" (advStringGrid, DBGrid oder VirtualStringTree)
- ein schon fertiges FRAME mit Navigationsbuttons (Speedbuttons) und einer Statusbar
- ein schon fertiges FRAME mit Buttons wie Aktualisieren, Verwerfen, Schließen, Hilfe.

Jedes mal wenn ein solches Formular neu erstellt wird gibt es eine ganze Reihe an Prozeduren die immer das Gleiche machen:
FirstClick, PrevClick, NextClick, LastClick, AddClick, SchliessenClick, HilfeClick,...

Jetzt soll ich eine Komponente schreiben die diese einheitlichen Funktionen kapselt. Dafür habe ich einer nicht visuelle Komponente geschieben (oder bin dabei).

Für die Grids habe ich, erfolgreich, folgendes benutzt:
Delphi-Quellcode:
  {$REGION 'Links der Grids'}
  strict private
    FAdvStringGridLink : TAdvStringGrid;
    FVirtualStringTreeLink : TVirtualStringTree;
    FDBGridLink : TDBGrid;

    procedure SetAdvStringGridLink (const Value : TAdvStringGrid);
    procedure SetVirtualStringTreeLink(const Value : TVirtualStringTree);
    procedure SetDBGridLink (const Value : TDBGrid);
  published
    property LinkAdvStringGrid : TAdvStringGrid read FAdvStringGridLink
                                                        write SetAdvStringGridLink;
    property LinkVirtualStringTree : TVirtualStringTree read FVirtualStringTreeLink
                                                        write SetVirtualStringTreeLink;
    property LinkDBGrid : TDBGrid read FDBGridLink
                                                        write SetDBGridLink;
  {$ENDREGION}
Damit kann ich im Objektinspektor das entsprechende Grid auswählen, sobald es auf dem Formular ist.

Das Gleiche habe ich für die Oberflächenelemente versucht:
Delphi-Quellcode:
  {$REGION 'Links zu den Oberflächenelementen'}
  strict private
    FFormVerwaltung : TFormVerwaltung;
    FfraNavigationStatusCustom : TfraNavigationStatusCustom;
    FfraButtonleiste : TfraButtonleiste;

    procedure SetFormVerwaltung (const Value : TFormVerwaltung);
    procedure SetfraButtonleiste (const Value : TfraButtonleiste);
    procedure SetfraNavigationStatusCustom(const Value : TfraNavigationStatusCustom);
  published
    property FormVerwaltung : TFormVerwaltung read FFormVerwaltung
                                                                   write SetFormVerwaltung;
    property fraButtonleiste : TfraButtonleiste read FfraButtonleiste
                                                                   write SetfraButtonleiste;
    property fraNavigationStatusCustom : TfraNavigationStatusCustom read FfraNavigationStatusCustom
                                                                   write SetfraNavigationStatusCustom;
  {$ENDREGION}
Wobei TfraButtonleiste und TfraNavigationStatusCustom Frames sind.
Das Formular selbst ist ein TFormVerwaltung und ich müsste da Self angeben können, oder so.
Diese Eigenschaften sehe ich im Objektinspektor, kann sie aber nicht zuweisen.

Kann mir da jemand helfen?

Danke David
  Mit Zitat antworten Zitat
David Martens

Registriert seit: 29. Sep 2003
205 Beiträge
 
Delphi XE Enterprise
 
#2

Re: Ein TFrame als published property?

  Alt 22. Feb 2010, 16:00
Hat denn keiner eine Idee?
  Mit Zitat antworten Zitat
kaiser1401

Registriert seit: 6. Mär 2006
Ort: Gescher
157 Beiträge
 
Delphi 7 Professional
 
#3

Re: Ein TFrame als published property?

  Alt 22. Feb 2010, 18:29
um von deiner Komponente an das Form zu kommen solltest du doch innerhalb deiner Komponente den Parent abfragen können, oder?

Spontane Idee wenn du es wirklich zuweisen willst wäre sowas wie

Delphi-Quellcode:
type
 TFormVerwaltung = class(tForm)
  // [....] was du sonst so hast in deinem Formular
 public
  property TheFormItself:TFormVerwaltung read self; // oder mit getter falls man an der stelle nicht direkt auf self zugreifen kann

 end;
Ungetestet und nur eine spontane Idee

Gruß
inc(i);
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Ein TFrame als published property?

  Alt 22. Feb 2010, 19:08
Vielleicht kann ja deine Linkkomponente die beiden Frames selbst erstellen? Sie müssten dann den Formularen gar nicht mehr explizit zur Designzeit hinzugefügt werden. Falls die Frames je nach Formular unterschiedliche Eigenschaftswerte haben sollen, könntest du die betreffenden Eigenschaften ja in deiner Komponente nach außen legen.
Uli Gerhardt
  Mit Zitat antworten Zitat
David Martens

Registriert seit: 29. Sep 2003
205 Beiträge
 
Delphi XE Enterprise
 
#5

Re: Ein TFrame als published property?

  Alt 22. Feb 2010, 20:04
Ich hab jetzt die Lösung gefunden.

Ich muß die Frames für Delphi registrieren, dann geht es. Ich hatte die nur in die Projekte eingebunden.

Die TFormVerwaltung geht zwar immer noch nicht, aber das ist nicht so wichtig.

Gruß David
  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 03:47 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