![]() |
Typen varibel machen?
Wenn man so einen Typen deklariert im Interface Teil
Delphi-Quellcode:
Ist dies ja eine Constante. Kann man diese Konstante irgendwie Variabel bekomen? Problem ist, das dies nicht zu einen Array werden darf, sondern letztliche eine Konstante bleiben muß. Warum? Wenn ich eine Eigenschaft als Constante deklariere brauch ich keinen eigenen Eigenschaftseditor. Was ich bei einer simplen Auflistung einfach zu viel des guten ansehe.
type
ItemCollections = (A_Test1, A_Test2, A_Test3, A_Test4); |
Re: Typen varibel machen?
Hmmm *les*
:gruebel: *nochmal les* :gruebel: Entweder liegts an mir oder an die das ich dich nicht versteh :stupid: |
Re: Typen varibel machen?
ItemCollections ist keine Variable, das ist ein Typ. Es wäre konventioneller es TItemCollections zu nennen.
Jetzt kannst du Variablen von diesem Typ erstellen:
Delphi-Quellcode:
außerdem werden "Aufzählungstypen" immer mit 2 Buchstaben vorne in jeder Eigenschaft benannt, also etwa so:
var
itemcollection:itemcollections; begin itemcollection:=a_test1; end;
Delphi-Quellcode:
type
tdelphiforum=(dfdelphipraxis,dfdelphiforum,dfdsdt); |
Re: Typen varibel machen?
Ups, gilt eigendlich für .Net aber egal.
Also, wenn ich eine Property als o.g. Aufzählungstyp definiere, dann stellt der Objekt-Inspektor eine Liste bereit, die sich nahtlos einfügt. Leider kann man diese Liste scheinbar nicht manuell erzeugten (daran verzweifle ich im Moment), siehe Posting ![]() Nun möchte ich einen solchen Aufzählungstyp per Code erzeugen lassen. Geht das? |
Re: Typen varibel machen?
was heisst nicht manuell erzeugen?
|
Re: Typen varibel machen?
Man kann einen eigenen PropertyEditor erschaffen, was das für unnöte Arbeit ist kannst du dir denken. Funktioniert ungefähr so.
Delphi-Quellcode:
Dann kommt noch hinzu, das du jedes Event schreiben mußt, um das Click oder das Escape Verhalten für die Maus und dann noch das selbe für die Tastatur :-( festzulegen usw. Dieses kann ich mir mit eienr Aufzählung spaaren. Jedoch kann man diese Aufzählung (das angezeigte Element wenn man auf den Pfeil klickt) nicht manuell erzeugen. Die Klasse (bei mir eine ListBox) muß es gehen, jedoch scheint diese keinen hier bekannt zu sein, davon mal abgesehen, ob diese überhaupt zugänglich ist, da ich auch mit Google nichts finde (meistens wird die Listbox genommen).
function AktivePageEditor.EditValue(context: ITypeDescriptorContext;
provider: IServiceProvider; value: TObject): TObject; var wFes : IWindowsFormsEditorService; DropDown : ListBox; control: Talaspanel; i,f : Integer; begin control := context.Instance as Talaspanel; wfes := (IWindowsFormsEditorService(provider.GetService(TypeOf(IWindowsFormsEditorService)))); DropDown := ListBox.Create; DropDown.BorderStyle := BorderStyle.FixedSingle; for i := 0 to Control.Items.Count-1 do begin if (control.Items[i] as PanelItem).Name <> nil then DropDown.Items.Add((control.Items[i] as PanelItem).Name) else DropDown.Items.Add(control.Items[i]); end; wfes.DropDownControl(DropDown); if (Value <> nil) then begin f := DropDown.FindString(Value as String); if f <> -1 then begin Messagebox.Show(f.ToString); DropDown.SelectedItem := (Value as String); end; end; if DropDown.SelectedIndex <> -1 then result := (control.Items[DropDown.SelectedIndex] as PanelItem).Name; end; Diese Prozedure oben muß ich für jede Liste neu schreiben :-(. |
Re: Typen varibel machen?
Vielleicht klärst du uns mal auf, ob du nun einen richtigen Container oder nur eine Flags in deinem Editor bearbeiten willst.
Für Flags ist das ziemlich easy, da der code immer der gleiche ist. Lassen sich die Items des Containers in Strings umwandeln ist es auch dort möglich den gleichen Editor für mehrere Container zu nehmen. |
Re: Typen varibel machen?
Die Eigenschaft soll nur eine Auswahl werden, die sich allerdings nach dem Property (ist ein kontainer) Items richtet. Die Eigenschaft soll den jeweiligen Namen der sich in Items befindlichen Komponenten (hier Panels) anzeigen und zum Auswählen anzeigen. Sobald eines der Items ausgewählt wird, wird die Komponente neu gezeichnet (im Moment noch soll ;-)).
Also handelt es sich im Prinzip nur um ein dynamisches Array of Strings. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 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 by Thomas Breitkreuz