win32: dont update index for ReadOnly in TWin32WSCustomComboBox.SetText. It's not necessary because index, so the Text, is updated in LCL. The previous implementation was also wrong since could select wrong item, e.g., setting text to 'a' in a combo that has items 'abc', 'a' was selecting 'abc'

git-svn-id: trunk@34120 -
This commit is contained in:
blikblum 2011-12-11 23:11:29 +00:00
parent eb7d5b66c7
commit 5f0b15ad52

View File

@ -1020,31 +1020,23 @@ var
WideBuffer: widestring;
{$endif}
begin
// not necessary. Change is already done in TCustomComboBox.RealSetText
if TCustomComboBox(AWinControl).ReadOnly then
Exit;
Handle := AWinControl.Handle;
{$ifdef WindowsUnicodeSupport}
if UnicodeEnabledOS then
begin
WideBuffer := UTF8ToUTF16(AText);
if TCustomComboBox(AWinControl).ReadOnly then
Windows.SendMessageW(Handle, CB_SELECTSTRING, -1, LPARAM(PWideChar(WideBuffer)))
else
Windows.SendMessageW(Handle, WM_SETTEXT, 0, LPARAM(PWideChar(WideBuffer)));
Windows.SendMessageW(Handle, WM_SETTEXT, 0, LPARAM(PWideChar(WideBuffer)));
end
else
begin
AnsiBuffer := UTF8ToAnsi(AText);
if TCustomComboBox(AWinControl).ReadOnly then
Windows.SendMessage(Handle, CB_SELECTSTRING, -1, LPARAM(PChar(AnsiBuffer)))
else
Windows.SendMessage(Handle, WM_SETTEXT, 0, LPARAM(PChar(AnsiBuffer)));
Windows.SendMessage(Handle, WM_SETTEXT, 0, LPARAM(PChar(AnsiBuffer)));
end;
{$else}
if TCustomComboBox(AWinControl).ReadOnly then
Windows.SendMessage(Handle, CB_SELECTSTRING, -1, LPARAM(PChar(AText)))
else
Windows.SendMessage(Handle, WM_SETTEXT, 0, LPARAM(PChar(AText)));
Windows.SendMessage(Handle, WM_SETTEXT, 0, LPARAM(PChar(AText)));
{$endif}
end;