![]() |
Eigenschaftenfenster wie OI
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute,
ich blende zur Laufzeit ein Eigenschaftenfenster zu meinen Controls für den Benutzer ein. Das Design gefällt mir da aber nicht. Meistens wird das Fenster auch zu groß und verdeckt zu viel vom Programm. Im Anhang mal ein Screenshot der aktuellen Ansicht: Kann mir jemand ein paar Tipps für ein besseres Design, eventuell mit Bsp. geben? Wie wird überhaupt die Ansicht des OI realisiert (welche Controls)? Imho haben auch Grafikprogramme für Ihre Werkzeuge (Stift etc.) interessante Lösungen. Dank und Gruß oki |
Re: Eigenschaftenfenster wie OI
ich habe in meinem DFM-Editor sehr mühevoll versucht den OI nachzubauen.
evtl hilft dir das ein wenig. Gruß Frank |
Re: Eigenschaftenfenster wie OI
|
Re: Eigenschaftenfenster wie OI
@_frank_: Ja, das sieht nach ner Menge Arbeit aus. So komplex brauch ich es zum Glück nicht. Ich hab mir mal die Screenshots angeschaut. Dank für den Tip. Es ist aber noch nicht ganz das, was ich brauche.
@Hawkeye: hab mir gerade alles runter geladen. Da ich mein neus Projekt in D2007 entwickel schau ich erst mal, ob ich die vorhandenen Packages installiert bekomme. Melde mich, sobald ich ein erstes Gefühl habe. Dank und Gruß oki |
Re: Eigenschaftenfenster wie OI
In der JVCL ist ein Objektinspektor drin, der dem in Delphi in fast nichts nachsteht.
|
Re: Eigenschaftenfenster wie OI
Uppps,
hab die Jedis drauf, und weis nicht mal was davon. :oops: Gib mal nen Tip, wie der heißt. Gruß oki |
Re: Eigenschaftenfenster wie OI
TJvInspector oder TJvObjectInspector - ich bin mir nicht ganz sicher
|
Re: Eigenschaftenfenster wie OI
TJvInspector; habs auch grad gefunden. Wie weist man da das Object zu?
Gruß |
Re: Eigenschaftenfenster wie OI
Zitat:
Delphi-Quellcode:
Das sieht gut aus, aber leider möchte ich dem Nutzer nicht alle Published-eigenschaften zugänglich machen.
JvInspector1.AddComponent(MyComponent);
Mit ExtLib bin ich noch nicht weiter, bekomme beim Compilieren noch einige Fehler. Arbeite noch dran. Gruß oki |
Re: Eigenschaftenfenster wie OI
Liste der Anhänge anzeigen (Anzahl: 1)
Das geht aber auch mit den jedis.
Ich habe Die mal ein Bild von meinem Objektinspektor beigefügt. In dem Bild kann der Benutzer ein Label einstellen Das Label habe ich dem Inspektor über folgenden Code hinzugefügt
Delphi-Quellcode:
Im JvInspector1DataValueChanged kann ich dann die Variablen wie strvariable den Eigenschaften zuweisen.
JvInspector1.Visible:=true;
JvInspector1.Clear; InspCat := TJvInspectorCustomCategoryItem.Create(JvInspector1.Root, nil); InspCat.Expanded:=true; InspCat.SortKind:=iskNone; InspCat.DisplayName := _('Visuell'); strvariable:=TLabel(control).caption; TJvInspectorVarData.New(InspCat, 'String', TypeInfo(String), @strvariable).DisplayName := _('Text'); TJvInspectorVarData.New(InspCat, 'Integer', TypeInfo(Integer), @TLabel(control).top).DisplayName := _('Oben'); TJvInspectorVarData.New(InspCat, 'Integer', TypeInfo(Integer), @TLabel(control).Left).DisplayName := _('Links'); TJvInspectorVarData.New(InspCat, 'Integer', TypeInfo(Integer), @TLabel(control).height).DisplayName := _('Höhe'); TJvInspectorVarData.New(InspCat, 'Integer', TypeInfo(Integer), @TLabel(control).width).DisplayName := _('Breite'); TJvInspectorVarData.New(InspCat, 'Font', TypeInfo(TFont), @TLabel(control).font).DisplayName := _('Schriftart'); TJvInspectorVarData.New(InspCat, 'Color', TypeInfo(TColor), @TLabel(control).Color).DisplayName := _('Farbe'); TJvInspectorVarData.New(InspCat, 'Align', TypeInfo(TAlignment), @TLabel(control).Alignment).DisplayName := _('Ausrichtung'); Boolvariable:=TLabel(control).Transparent; TJvInspectorVarData.New(InspCat, 'Transparent', TypeInfo(Boolean), @Boolvariable).DisplayName := _('Transparent'); InspCat := TJvInspectorCustomCategoryItem.Create(JvInspector1.Root, nil); InspCat.DisplayName := _('Allgemein'); InspCat.SortKind:=iskNone; TJvInspectorVarData.New(InspCat, 'String', TypeInfo(String), @control.Name).DisplayName := _('Name'); InspCat.Expanded:=true; Spiel einfach mal ein bischen damit herum. Es lohnt sich |
Re: Eigenschaftenfenster wie OI
Hallo v2afrank und Dank für das Beispiel. Ich denke, dass hilft mir weiter.
Wie du sagst werd ich damit mal rumexperimentieren. Dank und Gruß oki |
Re: Eigenschaftenfenster wie OI
Kann man in der Komponente auch die angezeigten Eigenschaften einschränken?
Glaube es wäre oft ungeschickt wenn der User den Namen des Labels ändert... PS: Eigentlich wäre es auch günstig, wenn man die gewählten Eigenschaften speichern und laden könnte... Grüße // Martin |
Re: Eigenschaftenfenster wie OI
Ja kann man. Über die Zeile
Delphi-Quellcode:
weise ich der Komponente die Möglichkeit zu den Namen des Labels zu ändern. Er verändert dabei direkt die Variable Control.name, die vom Typ String ist. Wäre diese Zeile nicht drin, würde im OI keine Eigenschaft Name auftauchen.
TJvInspectorVarData.New(InspCat, 'String', TypeInfo(String), @control.Name).DisplayName := _('Name');
Bei
Delphi-Quellcode:
wird die Variable Boolvariable verändert.
Boolvariable:=TLabel(control).Transparent;
TJvInspectorVarData.New(InspCat, 'Transparent', TypeInfo(Boolean), @Boolvariable).DisplayName := _('Transparent'); Im JvInspector1DataValueChanged passiert dann damit die folgende Zuweisung
Delphi-Quellcode:
if control is tlabel then //Control ist hier meine interne Referenz auf das zu verändernde Objekt
begin if (data.Items[0].DisplayName=_('Transparent')) then tlabel(control).Transparent:=BoolVariable; //Noch weitere Abfragen des Labels end; |
Re: Eigenschaftenfenster wie OI
Ich glaube, dass mit dem Speichern läuft dann wohl nur über eine Serialisierung.
Gruß oki |
Re: Eigenschaftenfenster wie OI
Danke schonmal,
werde mir das Ding doch auch mal anschauen ! Grüße // Martin |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz