SASGIS - SAS.Планета
View Issue Details
0001123SAS.Планета[All Projects] Багpublic19-01-2012 05:4209-08-2012 07:16
DJ VK 
 
normaltweakalways
confirmedopen 
WindowsXPSP3
120808 
40xxxx 
0001123: При выборе в списке масштабов последней видимой строки, срабатывает прокрутка
Окно копирования, список масштабов. Если нижняя строка не влезает хотя бы на 1 пиксел в высоту, при попытке выбрать этот масштаб происходит
1. прокрутка.
2. выбор следующего масштаба!!!
Ну с прокруткой то хрен бы, а вот второй эффект надо подавить.
Открывать в новой программе. По умолчанию высота списка масштабов чуть меньше чем кратная количеству строк.
Достаточно растянуть окно чтобы список масштабов был кратен и эффект пропадает.

Но баг он и в африке баг.
windows 7
? fr_TilesCopy.pas (4,821) 20-01-2012 09:50
https://bugtracker.sasgis.org/file_download.php?file_id=611&type=bug
Issue History
19-01-2012 05:42DJ VKNew Issue
19-01-2012 05:45DJ VKSummaryПри выборе в списке масштабов последней строки, срабатывает прокрутка => При выборе в списке масштабов последней видимой строки, срабатывает прокрутка
19-01-2012 07:11TolikNote Added: 0005107
19-01-2012 07:11TolikStatusnew => acknowledged
20-01-2012 07:59DJ VKNote Added: 0005119
20-01-2012 08:01TolikNote Added: 0005120
20-01-2012 08:33DJ VKNote Added: 0005121
20-01-2012 08:35DJ VKNote Added: 0005122
20-01-2012 09:49DJ VKNote Deleted: 0005122
20-01-2012 09:50DJ VKFile Added: fr_TilesCopy.pas
20-01-2012 09:51DJ VKNote Added: 0005123
20-01-2012 09:59DJ VKNote Edited: 0005121bug_revision_view_page.php?bugnote_id=5121#r2565
20-01-2012 10:02DJ VKNote Edited: 0005121bug_revision_view_page.php?bugnote_id=5121#r2566
21-01-2012 13:58DJ VKNote Added: 0005154
22-01-2012 11:41DJ VKNote Added: 0005174
22-01-2012 12:25vdemidovNote Added: 0005176
22-01-2012 15:07vdemidovTarget Version => 40xxxx
22-01-2012 18:34gpsMaxTag Attached: windows 7
01-02-2012 14:07vdemidovStatusacknowledged => confirmed
09-08-2012 07:16vdemidovProduct Version.Nightly => 120808

Notes
(0005107)
Tolik   
19-01-2012 07:11   
Есть такое дело, причём было всегда.
(0005119)
DJ VK   
20-01-2012 07:59   
испытания показали, что выбор работает правильно, а вот отрисовка галочек глючит на экране. Это штатный компонент такой невеселый походу.
(0005120)
Tolik   
20-01-2012 08:01   
То есть кликаем 14, галочка ставится на 15, а копируется всё равно 14??
(0005121)
DJ VK   
20-01-2012 08:33   
(edited on: 20-01-2012 10:02)
да.

Можно переписать owner draw. Но проще перехватить мышку.


uses
  Types,
  Messages,
  Windows,

protected
    FOldListBoxProc: TWndMethod;
    procedure AdvListBoxProc(var Message: TMessage);

constructor TfrTilesCopy.Create(
....
begin
  ....
  FOldListBoxProc := chklstZooms.WindowProc;
  chklstZooms.WindowProc := AdvListBoxProc;
end;


procedure TfrTilesCopy.AdvListBoxProc(var Message: TMessage);
var
  VRect: TRect;
  VIntegralHeight : Integer;
  VProc : Boolean;
begin
  VProc := True;
  if( Message.Msg = WM_LBUTTONDOWN ) then
  begin
    Windows.GetClientRect(chklstZooms.Handle,VRect);
    if(PtInRect(VRect, Point(LOWORD(Message.LParam),HIWORD(Message.LParam)))) then
    begin
      VIntegralHeight := chklstZooms.ItemHeight * (chklstZooms.Height div chklstZooms.ItemHeight);
      if(HIWORD(Message.LParam) >= (VIntegralHeight + VRect.Top)) then VProc := False;
    end;
  end;
  if VProc then FOldListBoxProc(Message);
end;

(0005123)
DJ VK   
20-01-2012 09:51   
Исправленный юнит приложил. прокрутка больше на происходит при левом щелчке. если есть желание можно перехватить и двойной щелчок.
(0005154)
DJ VK   
21-01-2012 13:58   
В Windows 7 не работает.
(0005174)
DJ VK   
22-01-2012 11:41   
грязный хак, да еще и не рабочий... Так назвал этот вариант решения vdemidov
Ну а как ШТАТНЫЙ компонент с заведомо глючной отрисовкой исправить??

1. написать свой компонет на основе этого override обработчик мыши? хак но не грязный.
2. написать свой компонент на основе этого с отрисовкой правильной? делать чужую работу
3. взять из новой версии дельфи? а нахрена тогда delphi 2007
4. взять из новой версии дельфи и заменить имена добавив в дистрибутив?
5. заменить на другой компонент, и нарастить внешние зависимости?
(0005176)
vdemidov   
22-01-2012 12:25   
Вы сами написали что в вин 7 не работает. Я проверил. Действительно не работает. Смысла городить огород ради исправление только в хрюше не вижу. Перейдем на боле новую делфу само исчезнет.