[Lazarus] @DBLookupControls users: call for test
Marcos Douglas
md at delfire.net
Mon Dec 12 19:58:32 CET 2011
On Mon, Dec 12, 2011 at 3:11 PM, Marcos Douglas <md at delfire.net> wrote:
> On Mon, Dec 12, 2011 at 2:35 PM, Marcos Douglas <md at delfire.net> wrote:
>> On Mon, Dec 12, 2011 at 2:16 PM, Luiz Americo Pereira Camara
>> <luizmed at oi.com.br> wrote:
>>>
>>> On 12/12/2011 14:25, Marcos Douglas wrote:
>>>>
>>>> I think I wrote better in bug tracker:
>>>> 1. Define properties AutoComplete and AutoDropDown to True;
>>>> 2. Type a new value (the DropDown will open) that not exists in DataSet (list);
>>>> 3. If you type ENTER the combo will clear, because no value on list
>>>> was found (OK);
>>>> 4. Repeat 0000002. Now if you type [Down] to select a item (use the
>>>> keyboard and don't type ENTER), but after type a new value that not
>>>> exists in DataSet list and ENTER. The ComboBox is not cleaned.
>>>>
>>>> Attention in:
>>>> + AutoComplete and AutroDropDown;
>>>> + Item #4: When the dropdown open, just click down (selecting a item)
>>>> but don't close it; after, type something that do not exists in list
>>>> and press ENTER. You see the Text typed still there.
>>>
>>>
>>> Still cannot reproduce.
>>>
>>> Can you create a sample project and add to the bugtracker?
>>
>> Yes, I will... later.
>
> Well, the componente do not clean[1] itself (sorry about that) but the
> bug still exists, but otherwise.
>
> [1] I had a EditingDoneEvent like this:
> procedure TFooHelper.ComboEditingDoneCallback(Sender: TObject);
> var
> cbx: TDBLookupComboBox;
> begin
> if Sender is TDBLookupComboBox then
> begin
> cbx := TDBLookupComboBox(Sender);
> if VarIsNull(cbx.KeyValue) then
> cbx.Text := '';
> end;
> end;
>
> Well, I took your exemple here http://bugs.freepascal.org/view.php?id=20841
> Please, copy paste the code below:
>
> object DBLookupComboBox3: TDBLookupComboBox
> Left = 96
> Height = 21
> Top = 416
> Width = 179
> AutoComplete = True
> AutoDropDown = True
> DataField = 'MasterId'
> DataSource = LookupDatasource
> KeyField = 'Id'
> ListField = 'NAME'
> ListFieldIndex = 0
> ListSource = MasterDatasource
> LookupCache = False
> TabOrder = 6
> end
>
> Implements the EditingDoneEvent like this:
> procedure TFooHelper.DBLookupComboBox3EditingDone(Sender: TObject);
> var
> cbx: TDBLookupComboBox;
> begin
> cbx := TDBLookupComboBox(Sender);
> ShowMessage(VarToStr(cbx.KeyValue)); ///<<<<<<<<< see here
> end;
>
> So, even the component do not clean itself, if I type a value that not
> exists in list the KeyValue would be NULL, don't?
Resume:
The problem exists if the user typed a value that not exists on list
(DataSet) but the KeyValue continue with the last value selected
before.
Marcos Douglas
More information about the Lazarus
mailing list