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
.