Hallo zusammen,
da ich eine Combobox suche, die eine Read Only Eigenschaft hat und bis jetzt keine passende gefunden habe, die für 32Bit & 64Bit funktioniert habe ich mal in meinen alten Beispielen gesucht und auch etwas gefunden.
Delphi-Quellcode:
type
TComboBoxReadOnly = class(TComboBox)
private
FReadOnly: Boolean;
procedure SetReadOnly(const Value: Boolean);
public
{ Public-Deklarationen }
published
property ReadOnly: Boolean read FReadOnly write SetReadOnly default False;
end;
implementation
procedure TComboBoxReadOnly.SetReadOnly(const Value: Boolean);
begin
if FReadOnly <> Value then
begin
FReadOnly := Value;
if HandleAllocated then
SendMessage(EditHandle, EM_SETREADONLY, Ord(Value), 0);
end;
end;
Wenn der Style der Combobox auf csDropDown steht, funktioniert das Read Only zumindest für die Texteingabe hervorragend. Jetzt gibt es noch zwei kleine Problemchen. Ich hätte die Option Read Only auch beim Style csSimple. Ich habe noch nicht so viele Komponeten abgeleitet und verändert. Was müsste ich noch hinzufügen oder ändern, dass die Read Only Option auch im Style csSimple funktioniert ?
Das zweite Problem ist, dass wenn ich die Property ReadOnly auf True setze im Style csDropDown, kann ich den Wert aus der Combobox immer noch ändern. Wie kann ich da die Auswahl der Werte abstellen ?
Es können auch ein paar Links sein, wo ich mir das ganze nachlesen kann.