Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Typen varibel machen? (https://www.delphipraxis.net/60721-typen-varibel-machen.html)

Taladan 11. Jan 2006 15:58


Typen varibel machen?
 
Wenn man so einen Typen deklariert im Interface Teil

Delphi-Quellcode:
type
  ItemCollections = (A_Test1, A_Test2, A_Test3, A_Test4);
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.

Dax 11. Jan 2006 16:03

Re: Typen varibel machen?
 
Hmmm *les*

:gruebel:

*nochmal les*

:gruebel:

Entweder liegts an mir oder an die das ich dich nicht versteh :stupid:

ichbins 11. Jan 2006 16:07

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:
var
  itemcollection:itemcollections;
begin
  itemcollection:=a_test1;
end;
außerdem werden "Aufzählungstypen" immer mit 2 Buchstaben vorne in jeder Eigenschaft benannt, also etwa so:
Delphi-Quellcode:
type
  tdelphiforum=(dfdelphipraxis,dfdelphiforum,dfdsdt);

Taladan 11. Jan 2006 16:13

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
http://www.delphipraxis.net/internal...ct.php?t=72418

Nun möchte ich einen solchen Aufzählungstyp per Code erzeugen lassen. Geht das?

ichbins 11. Jan 2006 16:19

Re: Typen varibel machen?
 
was heisst nicht manuell erzeugen?

Taladan 11. Jan 2006 16:27

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:
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;
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).
Diese Prozedure oben muß ich für jede Liste neu schreiben :-(.

Elvis 11. Jan 2006 18:37

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.

Taladan 11. Jan 2006 20:34

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 06:24 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