AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Eigene Komponente im Designer Verstecken
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene Komponente im Designer Verstecken

Ein Thema von 4dk2 · begonnen am 17. Okt 2017 · letzter Beitrag vom 17. Okt 2017
Antwort Antwort
4dk2

Registriert seit: 4. Sep 2007
176 Beiträge
 
#1

Eigene Komponente im Designer Verstecken

  Alt 17. Okt 2017, 10:49
Hallo Zusammen,

Ich hab eine Haupt-Komponente, die Im Designer SubKomponenten anlegt.
Möchte das ganze ähnlich machen wie bei TDataset und den Fields.
Also neues Feld TEST wird erzeugt = im QuellText entsteht TabelleTest:Tintegerfield.

Das Ganze geht bei mir auch, nur sind die erzeugten, nennen wir es mal "Felder", auf dem Formular als NonVisual-Komponenten sichtbar. Das möchte ich verhindern.

Was ich bei TComponent setzten oder überschreiben muss, hab ich bisher nicht rausgefunden.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.116 Beiträge
 
Delphi 12 Athens
 
#2

AW: Eigene Komponente im Designer Verstecken

  Alt 17. Okt 2017, 12:03
Weil du den Owner falsch setzt?

Deine Komponente ist der Besitzer der SubKomponenten,
aber wenn du stattdessen die Form als Besitzer angibst, dann fühlt sie sich natülich auch dafür verantwortlich und zeigt die an.

[Edit] Hmmmm, wie das bei den TFields läuft ... gute Frage.
Ich kenn es nur andersrum, also Delphi-Referenz durchsuchenSetSubComponent, wo man die Form nicht als Owner angibt, aber sie soll die SubKomponente dennoch speichern.

Sind deine Subkomponenten von TComponent abgeleitet?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (17. Okt 2017 um 12:07 Uhr)
  Mit Zitat antworten Zitat
4dk2

Registriert seit: 4. Sep 2007
176 Beiträge
 
#3

AW: Eigene Komponente im Designer Verstecken

  Alt 17. Okt 2017, 12:59
Jup ist von TComponent,
bei SetSubComponent(true), erzeugt er nix mehr im Quelltext und formular.

habs mal als mini Test zusammengepackt, beim klicken auf "..." beim property DummyAdd legt er die an.
Ich weiss das da grade der Bezug von der neuen Komponente zum Master fehlt, zum testen für euch hab ich alles weg gelassen



Delphi-Quellcode:
Type
  TTestComp=class(TComponent)
  private
    FWert: string;
    published
      property Wert:string read FWert write FWert;
  end;


  TTestCompMaster=class(TComponent)
  private
    FDummyAdd: string;
    published
      property DummyAdd:string read FDummyAdd write FDummyAdd;
  end;

//......
//aus register...

procedure Register;
begin
  RegisterComponents('DPTest', [TTestComp]);
  RegisterComponents('DPTest', [TTestCompMaster]);
  RegisterPropertyEditor(TypeInfo(string),TTestCompMaster,'DummyAdd',TTcTest_PropertyEditor);
end;

procedure TTcTest_PropertyEditor.Edit;
var tc:TComponent;
begin
 // Showmessage('EDIT');

  if GetComponent(0) is TComponent then
    tc:=TTestCompMaster(GetComponent(0));

  if not Assigned(tc) then exit;

  if tc.Owner is TForm then
    with TTestComp.Create(tc.Owner) do
    begin
      //SetSubComponent(true);
      Name:=GetUniqueName(Owner,ClassName);
    end;


 // Showmessage('EDIT ENDE');
end;
Angehängte Dateien
Dateityp: zip Beispiel.zip (14,8 KB, 0x aufgerufen)
  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 10:11 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