--------------------------------------------------------------------------------------------
[ENHANCED] VFP 9.0 FIX - THE DIRECTION OF THE LIST PORTION OF THE COMBOBOX CONTROL
January 2026
--------------------------------------------------------------------------------------------
CCB
1. BUG:
In vfp9 (and vfp6, vfp7, vfp8), for the ComboBox control, after the drop-down arrow is clicked,
the list portion is shown above or below the ComboBox control automatically,
now we we can set the list portion is always shown above the ComboBox control,
or the list portion is always shown below the ComboBox control.
2. CAUSE:
There are some BUGs in the following code.
3. RESOLUTION:
We can write some code to fix the BUG.
Fun6d620f :: ; proc near
push ebp ;0x006d620f : 55
mov ebp , esp ;0x006d6210 : 8bec
sub esp , 01Ch ;0x006d6212 : 83ec1c
mov ecx , dword ptr [ ebp + 12 ] ;0x006d6215 : 8b4d0c
push ebx ;0x006d6218 : 53
push esi ;0x006d6219 : 56
mov ebx , eax ;0x006d621a : 8bd8
call Fun4173cd ;0x006d621c : e8ac11d4ff
xor esi , esi ;0x006d6221 : 33f6
cmp eax , esi ;0x006d6223 : 3bc6
mov dword ptr [ ebp - 8 ] , eax ;0x006d6225 : 8945f8
je Label6d64a3 ;0x006d6228 : 0f8475020000
mov ecx , dword ptr [ ebp + 12 ] ;0x006d622e : 8b4d0c
xor edx , edx ;0x006d6231 : 33d2
inc edx ;0x006d6233 : 42
call Fun42f404 ;0x006d6234 : e8cb91d5ff
mov dword ptr [ ebp - 4 ] , eax ;0x006d6239 : 8945fc
mov eax , dword ptr [ Data939528 ] ;0x006d623c : a128959300
cmp eax , 01h ;0x006d6241 : 83f801
je Label6d626a ;0x006d6244 : 7424
cmp eax , esi ;0x006d6246 : 3bc6
je Label6d626a ;0x006d6248 : 7420
push dword ptr [ ebp + 24 ] ;0x006d624a : ff7518
mov eax , dword ptr [ ebp + 20 ] ;0x006d624d : 8b4514
push dword ptr [ ebp + 28 ] ;0x006d6250 : ff751c
push dword ptr [ ebp - 8 ] ;0x006d6253 : ff75f8
push dword ptr [ ebp + 16 ] ;0x006d6256 : ff7510
push dword ptr [ ebp + 12 ] ;0x006d6259 : ff750c
push ebx ;0x006d625c : 53
push dword ptr [ ebp + 8 ] ;0x006d625d : ff7508
call Fun6d6036 ;0x006d6260 : e8d1fdffff
jmp Label6d64a3 ;0x006d6265 : e939020000
Label6d626a ::
mov eax , dword ptr [ ebp - 4 ] ;0x006d626a : 8b45fc
push edi ;0x006d626d : 57
mov edi , dword ptr [ ebp + 16 ] ;0x006d626e : 8b7d10
call Fun41ba03 ;0x006d6271 : e88d57d4ff
cmp eax , 0FFFFFFFFh ;0x006d6276 : 83f8ff
jne Label6d628a ;0x006d6279 : 750f
mov ecx , dword ptr [ ebp - 4 ] ;0x006d627b : 8b4dfc
xor edx , edx ;0x006d627e : 33d2
call Fun43de2a ;0x006d6280 : e8a57bd6ff
mov eax , dword ptr [eax] ;0x006d6285 : 8b00
mov dword ptr [ ebp + 16 ] , eax ;0x006d6287 : 894510
Label6d628a ::
mov edi , dword ptr [ ebp - 4 ] ;0x006d628a : 8b7dfc
call Fun78b845 ;0x006d628d : e8b3550b00
cmp dword ptr [ ebp + 24 ] , esi ;0x006d6292 : 397518
jne Label6d62a2 ;0x006d6295 : 750b
xor ecx , ecx ;0x006d6297 : 33c9
push esi ;0x006d6299 : 56
inc ecx ;0x006d629a : 41
xor eax , eax ;0x006d629b : 33c0
call Fun544cfe ;0x006d629d : e85ceae6ff
Label6d62a2 ::
mov eax , dword ptr [ ebp - 4 ] ;0x006d62a2 : 8b45fc
push esi ;0x006d62a5 : 56
push esi ;0x006d62a6 : 56
lea esi , dword ptr [ ebp - 28 ] ;0x006d62a7 : 8d75e4
call Fun437e58 ;0x006d62aa : e8a91bd6ff
mov eax , dword ptr [ ebp - 16 ] ;0x006d62af : 8b45f0
sub eax , dword ptr [ ebp - 24 ] ;0x006d62b2 : 2b45e8
mov edi , dword ptr [ ebp + 16 ] ;0x006d62b5 : 8b7d10
mov dword ptr [ ebp + 12 ] , eax ;0x006d62b8 : 89450c
mov eax , dword ptr [ ebp - 20 ] ;0x006d62bb : 8b45ec
sub eax , dword ptr [ ebp - 28 ] ;0x006d62be : 2b45e4
mov dword ptr [ ebp + 28 ] , eax ;0x006d62c1 : 89451c
mov eax , dword ptr [ ebp - 4 ] ;0x006d62c4 : 8b45fc
call Fun41ba03 ;0x006d62c7 : e83757d4ff
push eax ;0x006d62cc : 50
mov eax , dword ptr [ ebp - 4 ] ;0x006d62cd : 8b45fc
call Fun78dc34 ;0x006d62d0 : e85f790b00
mov esi , dword ptr [ ebp - 16 ] ;0x006d62d5 : 8b75f0
sub esi , dword ptr [ ebp - 24 ] ;0x006d62d8 : 2b75e8
xor edi , edi ;0x006d62db : 33ff
cmp dword ptr [ ebp + 32 ] , edi ;0x006d62dd : 397d20
jg Label6d62ea ;0x006d62e0 : 7f08
mov eax , dword ptr [ Data94571c ] ;0x006d62e2 : a11c579400
mov dword ptr [ ebp + 32 ] , eax ;0x006d62e7 : 894520
Label6d62ea ::
cmp dword ptr [ ebp + 24 ] , edi ;0x006d62ea : 397d18
jne Label6d62fe ;0x006d62ed : 750f
mov eax , dword ptr [ ebp - 8 ] ;0x006d62ef : 8b45f8
mov ecx , dword ptr [ ebp + 32 ] ;0x006d62f2 : 8b4d20
cmp ecx , eax ;0x006d62f5 : 3bc8
jnl Label6d6304 ;0x006d62f7 : 7d0b
mov dword ptr [ ebp + 12 ] , ecx ;0x006d62f9 : 894d0c
jmp Label6d6307 ;0x006d62fc : eb09
Label6d62fe ::
mov eax , dword ptr [ ebp + 12 ] ;0x006d62fe : 8b450c
cdq ;0x006d6301 : 99
idiv esi ;0x006d6302 : f7fe
Label6d6304 ::
mov dword ptr [ ebp + 12 ] , eax ;0x006d6304 : 89450c
Label6d6307 ::
mov eax , dword ptr [ ebp + 20 ] ;0x006d6307 : 8b4514
mov eax , dword ptr [ eax + 12 ] ;0x006d630a : 8b400c
mov dword ptr [ ebx + 4 ] , eax ;0x006d630d : 894304
mov eax , dword ptr [ ebp + 12 ] ;0x006d6310 : 8b450c
cmp dword ptr [ ebp - 8 ] , eax ;0x006d6313 : 3945f8
je Label6d634a ;0x006d6316 : 7432
mov edi , dword ptr [ ebp + 16 ] ;0x006d6318 : 8b7d10
mov eax , dword ptr [ ebp - 4 ] ;0x006d631b : 8b45fc
call Fun41ba03 ;0x006d631e : e8e056d4ff
mov ecx , dword ptr [ ebp + 12 ] ;0x006d6323 : 8b4d0c
mov dword ptr [ ebp + 24 ] , eax ;0x006d6326 : 894518
mov eax , dword ptr [ ebp - 8 ] ;0x006d6329 : 8b45f8
cmp eax , ecx ;0x006d632c : 3bc1
mov edx , eax ;0x006d632e : 8bd0
jl Label6d6334 ;0x006d6330 : 7c02
mov edx , ecx ;0x006d6332 : 8bd1
Label6d6334 ::
mov edi , eax ;0x006d6334 : 8bf8
sub edi , edx ;0x006d6336 : 2bfa
cmp dword ptr [ ebp + 24 ] , edi ;0x006d6338 : 397d18
jl Label6d634d ;0x006d633b : 7c10
cmp eax , ecx ;0x006d633d : 3bc1
jnl Label6d6343 ;0x006d633f : 7d02
mov ecx , eax ;0x006d6341 : 8bc8
Label6d6343 ::
sub eax , ecx ;0x006d6343 : 2bc1
mov dword ptr [ ebp + 24 ] , eax ;0x006d6345 : 894518
jmp Label6d634d ;0x006d6348 : eb03
Label6d634a ::
mov dword ptr [ ebp + 24 ] , edi ;0x006d634a : 897d18
Label6d634d ::
mov ecx , dword ptr [ ebp + 24 ] ;0x006d634d : 8b4d18
mov edi , dword ptr [ ebp + 12 ] ;0x006d6350 : 8b7d0c
mov edx , dword ptr [ ebp - 4 ] ;0x006d6353 : 8b55fc
mov edx , dword ptr [edx] ;0x006d6356 : 8b12
lea eax , dword ptr [ ecx + edi ] ;0x006d6358 : 8d0439
cmp eax , dword ptr [ edx + 68 ] ;0x006d635b : 3b4244
mov dword ptr [ ebp - 12 ] , eax ;0x006d635e : 8945f4
jle Label6d6368 ;0x006d6361 : 7e05
imul edi , esi ;0x006d6363 : 0faffe
jmp Label6d6392 ;0x006d6366 : eb2a
Label6d6368 ::
xor edi , edi ;0x006d6368 : 33ff
cmp ecx , eax ;0x006d636a : 3bc8
mov dword ptr [ ebp + 32 ] , ecx ;0x006d636c : 894d20
jnl Label6d6392 ;0x006d636f : 7d21
Label6d6371 ::
push dword ptr [ ebp + 32 ] ;0x006d6371 : ff7520
mov eax , dword ptr [ ebp - 4 ] ;0x006d6374 : 8b45fc
lea esi , dword ptr [ ebp - 28 ] ;0x006d6377 : 8d75e4
call Fun78dc34 ;0x006d637a : e8b5780b00
mov eax , dword ptr [ ebp - 16 ] ;0x006d637f : 8b45f0
sub eax , dword ptr [ ebp - 24 ] ;0x006d6382 : 2b45e8
add edi , eax ;0x006d6385 : 03f8
inc dword ptr [ ebp + 32 ] ;0x006d6387 : ff4520
mov eax , dword ptr [ ebp + 32 ] ;0x006d638a : 8b4520
cmp eax , dword ptr [ ebp - 12 ] ;0x006d638d : 3b45f4
jl Label6d6371 ;0x006d6390 : 7cdf
Label6d6392 ::
mov eax , dword ptr [ Data93a8b8 ] ;0x006d6392 : a1b8a89300
lea esi , dword ptr [ ebp - 28 ] ;0x006d6397 : 8d75e4
mov dword ptr [ ebp + 32 ] , eax ;0x006d639a : 894520
call Fun425c32 ;0x006d639d : e890f8d4ff
test eax , eax ;0x006d63a2 : 85c0
jne Label6d63af ;0x006d63a4 : 7509
mov eax , dword ptr [ ebp - 24 ] ;0x006d63a6 : 8b45e8
sub eax , dword ptr [ ebp - 16 ] ;0x006d63a9 : 2b45f0
add dword ptr [ ebp + 32 ] , eax ;0x006d63ac : 014520
Label6d63af ::
mov eax , dword ptr [ ebx + 4 ] ;0x006d63af : 8b4304
mov ecx , dword ptr [ ebp + 8 ] ;0x006d63b2 : 8b4d08
add eax , edi ;0x006d63b5 : 03c7
mov dword ptr [ ebx + 12 ] , eax ;0x006d63b7 : 89430c
mov ecx , dword ptr [ecx] ;0x006d63ba : 8b09
mov ecx , dword ptr [ ecx + 0A8h ] ;0x006d63bc : 8b89a8000000
add ecx , eax ;0x006d63c2 : 03c8
;
; ---------------------------------------------------------------------------------
; VFP 9.0 FIX - THE DIRECTION OF THE LIST PORTION OF THE COMBOBOX CONTROL
; February 2019
; ---------------------------------------------------------------------------------
; CCB
;
; The direction of the list portion of the ComboBox control.
;
; 2019/2/18, by ccb
;
cmp dword ptr vfpa_sys9012_data,01h
je Label6d63da
cmp dword ptr vfpa_sys9012_data,02h
je Label6d63c7
cmp ecx , dword ptr [ ebp + 32 ] ;0x006d63c4 : 3b4d20
jl Label6d63da ;0x006d63ca : 7c0e
Label6d63c7 ::
mov ecx , dword ptr [ ebp + 20 ] ;0x006d63c7 : 8b4d14
mov eax , dword ptr [ ecx + 4 ] ;0x006d63cc : 8b4104
sub eax , edi ;0x006d63cf : 2bc7
dec eax ;0x006d63d1 : 48
mov dword ptr [ ebx + 4 ] , eax ;0x006d63d2 : 894304
add eax , edi ;0x006d63d5 : 03c7
mov dword ptr [ ebx + 12 ] , eax ;0x006d63d7 : 89430c
Label6d63da ::
mov ecx , dword ptr [ ebp + 20 ] ;0x006d63c7 : 8b4d14
mov eax , dword ptr [ ecx + 8 ] ;0x006d63da : 8b4108
mov edx , dword ptr [ecx] ;0x006d63dd : 8b11
mov esi , eax ;0x006d63df : 8bf0
sub esi , edx ;0x006d63e1 : 2bf2
lea edx , dword ptr [ esi - 2 ] ;0x006d63e3 : 8d56fe
cmp edx , dword ptr [ ebp + 28 ] ;0x006d63e6 : 3b551c
jle Label6d63ee ;0x006d63e9 : 7e03
mov dword ptr [ ebp + 28 ] , edx ;0x006d63eb : 89551c
Label6d63ee ::
mov edx , dword ptr [ ebp + 8 ] ;0x006d63ee : 8b5508
mov edx , dword ptr [edx] ;0x006d63f1 : 8b12
mov esi , dword ptr [ edx + 0ACh ] ;0x006d63f3 : 8bb2ac000000
add esi , dword ptr [ecx] ;0x006d63f9 : 0331
mov edx , dword ptr [ ebp + 28 ] ;0x006d63fb : 8b551c
add esi , edx ;0x006d63fe : 03f2
cmp esi , dword ptr [ Data93a810 ] ;0x006d6400 : 3b3510a89300
jl Label6d6429 ;0x006d6406 : 7c21
mov ecx , dword ptr [ ebp + 8 ] ;0x006d6408 : 8b4d08
mov dword ptr [ ebx + 8 ] , eax ;0x006d640b : 894308
sub eax , edx ;0x006d640e : 2bc2
add eax , 0FFFFFFFEh ;0x006d6410 : 83c0fe
mov dword ptr [ebx] , eax ;0x006d6413 : 8903
mov ecx , dword ptr [ecx] ;0x006d6415 : 8b09
mov ecx , dword ptr [ ecx + 0ACh ] ;0x006d6417 : 8b89ac000000
add eax , ecx ;0x006d641d : 03c1
jns Label6d6434 ;0x006d641f : 7913
mov dword ptr [ebx] , ecx ;0x006d6421 : 890b
lea eax , dword ptr [ ecx + edx - 2 ] ;0x006d6423 : 8d4411fe
jmp Label6d6431 ;0x006d6427 : eb08
Label6d6429 ::
mov eax , dword ptr [ecx] ;0x006d6429 : 8b01
mov dword ptr [ebx] , eax ;0x006d642b : 8903
mov eax , dword ptr [ecx] ;0x006d642d : 8b01
add eax , edx ;0x006d642f : 03c2
Label6d6431 ::
mov dword ptr [ ebx + 8 ] , eax ;0x006d6431 : 894308
Label6d6434 ::
mov esi , dword ptr [ ebp - 4 ] ;0x006d6434 : 8b75fc
push dword ptr [ ebp + 16 ] ;0x006d6437 : ff7510
xor edx , edx ;0x006d643a : 33d2
mov eax , esi ;0x006d643c : 8bc6
call Fun4158f5 ;0x006d643e : e8b2f4d3ff
pushd 00h ;0x006d6443 : 6a00
mov edx , eax ;0x006d6445 : 8bd0
mov ecx , esi ;0x006d6447 : 8bce
call Fun416bd8 ;0x006d6449 : e88a07d4ff
mov edx , dword ptr [ ebp + 24 ] ;0x006d644e : 8b5518
pushd 01h ;0x006d6451 : 6a01
mov ecx , esi ;0x006d6453 : 8bce
call Fun4c25d3 ;0x006d6455 : e879c1deff
mov eax , dword ptr [ebx] ;0x006d645a : 8b03
mov ebx , dword ptr [ ebx + 4 ] ;0x006d645c : 8b5b04
pushd 00h ;0x006d645f : 6a00
push ebx ;0x006d6461 : 53
push eax ;0x006d6462 : 50
mov ebx , esi ;0x006d6463 : 8bde
call Fun4c763c ;0x006d6465 : e8d211dfff
mov ecx , esi ;0x006d646a : 8bce
call Fun46f36f ;0x006d646c : e8fe8ed9ff
neg eax ;0x006d6471 : f7d8
sbb eax , eax ;0x006d6473 : 1bc0
not eax ;0x006d6475 : f7d0
and eax , dword ptr [ ebp + 28 ] ;0x006d6477 : 23451c
xor ecx , ecx ;0x006d647a : 33c9
push edi ;0x006d647c : 57
inc ecx ;0x006d647d : 41
mov edi , esi ;0x006d647e : 8bfe
call Fun544cfe ;0x006d6480 : e879e8e6ff
mov eax , dword ptr [ ebp - 8 ] ;0x006d6485 : 8b45f8
cmp dword ptr [ ebp + 12 ] , eax ;0x006d6488 : 39450c
pop edi ;0x006d648b : 5f
jl Label6d6494 ;0x006d648c : 7c06
cmp dword ptr [ ebp + 24 ] , 00h ;0x006d648e : 837d1800
je Label6d64a3 ;0x006d6492 : 740f
Label6d6494 ::
mov esi , dword ptr [ ebp - 4 ] ;0x006d6494 : 8b75fc
mov eax , esi ;0x006d6497 : 8bc6
call Fun473ea1 ;0x006d6499 : e803dad9ff
call Fun78c884 ;0x006d649e : e8e1630b00
Label6d64a3 ::
pop esi ;0x006d64a3 : 5e
pop ebx ;0x006d64a4 : 5b
leave ;0x006d64a5 : c9
ret 01Ch ;0x006d64a6 : c21c00
4. APPLIES TO:
VFP 6.0.8167.0
VFP 6.0.8961.0 (SP5)
VFP 7.0.0.9262
VFP 7.0.0.9465 (SP1)
VFP 8.0.0.2521
VFP 8.0.0.3117 (SP1)
VFP 9.0.0.2412
VFP 9.0.0.3504 (SP1)
VFP 9.0.0.4611 (SP2)
VFP 9.0.0.5015 (SP2)
VFP 9.0.0.5411 (SP2)
VFP 9.0.0.5721 (SP2)
VFP 9.0.0.5815 (SP2)
VFP 9.0.0.6303 (SP2)
VFP 9.0.0.6602 (SP2)
VFP 9.0.0.7423 (SP2)
The bug has been fixed in VFP Advanced.
5. REFERENCE WEBSITES:
1, baiyujia.com:
http://www.baiyujia.com
http://www.baiyujia.com/vfpdocuments/f_vfp9fix63.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix360.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix361.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix390.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix391.asp
2, sunyear.com.tw:
http://vfp.sunyear.com.tw/viewtopic.php?t=6986
6. OTHER:
For reference only, there is no guarantees.
Any questions or suggestions, please send me an email at ccb2000@163.com.
|