AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE [XE10] Designer, Properties bedingt im Inspektor verstecken
Thema durchsuchen
Ansicht
Themen-Optionen

[XE10] Designer, Properties bedingt im Inspektor verstecken

Ein Thema von 4dk2 · begonnen am 28. Apr 2016 · letzter Beitrag vom 2. Mai 2016
Antwort Antwort
4dk2

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

[XE10] Designer, Properties bedingt im Inspektor verstecken

  Alt 28. Apr 2016, 09:03
Guten Morgen zusammen,
gibt es eine Möglichkeit per TPropertyEditor oder TComponentEditor (oder andere), Properties bedingt im Inspektor zu verstecken?

z.b.
Delphi-Quellcode:
type
  TCompTest=class(TComponent)
  private
    FBedingung:Integer;
    FBedingtAnzeigen:String;
  published
    property Bedingung:Integer read FBedingung write FBedingung;
    property BedingtAnzeigen:string read FBedingtAnzeigen write FBedingtAnzeigen;
  end;
Ich würd jetzt gerne z.b. wenn Bedingung=1 ist BedingtAnzeigen im Objekt-Inspektor verstecken.
Geht das?
  Mit Zitat antworten Zitat
gemeni2005

Registriert seit: 2. Jul 2007
Ort: München
38 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: [XE10] Designer, Properties bedingt im Inspektor verstecken

  Alt 2. Mai 2016, 08:12
Hallo,
ja das geht mit dem "UnlistPublishedProperty" aus der Unit DesignIntf.
Gruß
Robert
  Mit Zitat antworten Zitat
4dk2

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

AW: [XE10] Designer, Properties bedingt im Inspektor verstecken

  Alt 2. Mai 2016, 14:22
Also die Lösung ist bei mir:
Delphi-Quellcode:
function TSimpleObject_PropertyEditor._PropertyEditorFilterFunc(const ATestEditor: IProperty): Boolean;
begin
  result:=true;
  if ATestEditor.GetName='Daten2then //name des properties das bedingt vesteckt werden soll...
    if not GetSimpleObject.Show then //soll das property angezeigt werden oder nicht...
      result:=false;
end;

procedure TSimpleObject_PropertyEditor.GetProperties(Proc: TGetPropProc);
var
  I: Integer;
  J: Integer;
  Components: IDesignerSelections;
begin
  Components := TDesignerSelections.Create;
  for I := 0 to PropCount - 1 do
  begin
    J := GetOrdValueAt(I);
    if J <> 0 then
      Components.Add(TComponent(GetOrdValueAt(I)));
  end;
 // showmessage(inttostr(Components.Count));
  if Components.Count > 0 then
    GetComponentProperties(Components, tkProperties, Designer, Proc,_PropertyEditorFilterFunc);
end;

function TSimpleObject_PropertyEditor.GetSimpleObject: TSimpleObject;
begin
  if GetOrdValue <> 0 then
  begin
    Result := TSimpleObject(GetOrdValue);
  end
  else
  begin
    Result := nil;
  end;
end;
funktioniert generell,
Aber nachdem die Bedingung gesetzt ist, muss man im Designer einmal das Object verlassen und wieder öffnen,
damit GetProperties erneut aufgerufen wird.
  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 18:35 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