Конференция "KOL" » Версия 2.90 [Delphi, Windows]
 
  • QAZ (06.05.10 20:40) [80]

    > MSDN уже в курсе.

    тогда видимо пора сделать заполнение комбо через переменную
  • mdw (06.05.10 20:41) [81]

    > и какова они остались в форме это вопрос к мск, тк в редакторе
    > свойств они пустые...

    Это вопрос к Delphi. MCK здесь не причем.
  • QAZ (06.05.10 20:48) [82]

    > Это вопрос к Delphi. MCK здесь не причем.

    еслиб делфи был причем, это былобы не только у тулбара логично предположить
  • mdw (06.05.10 23:56) [83]

    > > Это вопрос к Delphi. MCK здесь не причем.еслиб делфи был
    > причем, это былобы не только у тулбара логично предположить

    Версия Delphi какая? до 7-й включительно ни разу такого не видел. А выше никто толком и не реализовывал, насколько знаю. Хотя не знаю, не устанавливал ни разу старше Delphi7, смысла нет.
  • QAZ (07.05.10 12:17) [84]
    7я , и тупняк этот только в кол и только у тулбар
    причем извращение в том что существующий онклик от несуществующего в тексте формы по формату описания ничем не отличается
    при этом делфи видит только существующий а мск все...
  • QAZ (07.05.10 12:31) [85]
    ище хотел спросить
    это нормалино что при UNICODE_CTRLS добавляется от 3 до 10 килобайт , в зависимости от размера софта? даже если просто пустой от кода проект
    есть подозрение что подключается куча лишних преобразований строк
    ведь все апишные функции имеют псевдонимы под уникод и их вызов не должен на столько увеличивать код
  • Vladimir Kladov © (07.05.10 15:28) [86]
    Увеличение на несколько К - нормально. Часть ассемблерного кода для UNICODE_CTRLS отключается.

    Исправление можно добавить, чтобы строки добавлялись в комбобокс с обязательным переприсваиванием переменной. Нужно ли - не знаю, исправление добавляет немного, и только для UNICODE_CTRLS, и только при наличии комбобокса.

    Чтобы тулбар забывал про назначавшиеся события, надо удалять не событие, а всю кнопку. В MCK приходится хранить имя события, как хранить ссылку на событие другим способом и стирать ее при удалении, мне неизвестно.
  • user89879 (12.05.10 12:56) [87]
    я прошу прощения что оффтоплю, сайт kolnmck.net показывает 404, что-то случилось?
  • Vladimir Kladov © (12.05.10 18:12) [88]
    Разбираемся.
  • QAZ (13.05.10 11:46) [89]
    ошибка в
    procedure TList.SetCapacity( Value: Integer );
    asm
           CMP       EDX, [EAX].fCount
           {$IFDEF USE_CMOV}
           CMOVL     EDX, [EAX].fCount
           {$ELSE}
           JGE       @@1
           MOV       EDX, [EAX].fCount
    @@1:    {$ENDIF}
           CMP       EDX, [EAX].fCapacity
           JE        @@exit

           MOV       [EAX].fCapacity, EDX
           SAL       EDX, 2
           LEA       EAX, [EAX].fItems
          CALL      System.@ReallocMem
    @@exit:
    end;



    выдает EoutOfMemory после добавления 68044 итема
    "лечица" заданием больших значений Capacity  но после его превышения один фиг вылетает
    например если задать Capacity:=100000 то вылетет после 120932 итема
    ватафака?
    я не против сразу ставить Capacity:=10000000 но наскока это влияет на память?
  • Vladimir Kladov © (13.05.10 16:14) [90]
    procedure TForm1.KOLForm1Show(Sender: PObj);
    var L: PList;
       i: Integer;
    begin
       L := NewList;
       for i := 1 to 100000 do
       begin
           L.Add( Pointer( i ) );
       end;
       ShowMessage( Int2Str( L.Count ) );
       L.Free;



    Ничего не вылетает, пишет 100000 и работает дальше.
    ТАк что давайте минимальный проект, на котором вылетает.
  • vampir_infernal (13.05.10 18:49) [91]
    При использовании файла справки в процедуре AssignHtmlHelp или методе TControl.SetHelpPath выделяется память в переменную HelpFilePath, которая никак не освобождается при выходе из приложения. Предлагаю исправить метод TControl.ProcessMessage примерно так:

    if (Msg.message = WM_QUIT) then
         begin
           AppletTerminated := True;
           if HelpFilePath <> '' then
             FreeMem(HelpFilePath);
           {$IFDEF PROVIDE_EXITCODE}
           ExitCode := Msg.wParam;
           {$ENDIF PROVIDE_EXITCODE}
         end

  • Vladimir Kladov © (13.05.10 19:51) [92]
    Моим тапочкам даже не смешно. Даже в win95, когда завершается работа приложения, вся память гарантированно освобождается, если это не был GlobalAlloc из системы. В NT-based системах вообще вся память освобождается. Начиная с Win2K гарантируется освобождение уже не только всей памяти, но и всех дескрипторов gdi, user и kernel.
  • vampir_infernal (13.05.10 23:02) [93]
    FastMM тоже не смеется. Сколько читал про выделение\освобождение памяти, про такие гарантии не знал. Спасибо, буду знать.
  • QAZ (17.05.10 15:47) [94]
    а вот от меня пример по поводу косяка скролбара
    http://narod.ru/disk/20833716000/scrollbartest.rar.html
    таскаем скролбары до полного просветления
  • Vladimir Kladov © (17.05.10 19:46) [95]
    Достижимость SBPosition = SBMax могу продемонстрировать сейчас, программно. Немного переделанный ваш же пример: http://kolmck.net/demos/scrollbartest2.rar Жать на числа в listview (особенно после 20) и смотреть на значения текущей позиции в заголовке формы (это значение, которое возвращает SetScrollInfo в мемо) и в нижней Label3 (значение, полученное GetScrollInfo из того же мемо). Окна не ограничиваются мемо. Если мемо умеет визуально корректировать позицию скроллбара, это не значит, что все контролы в windows такие умные. По крайней мере, траблы с пересчетом скролл-позиций я имел немаленькие, когда делал ScrollBox.

    Далее, вы прекрасно продемонстрировали, что левый дополнительный скроллбар, хотя и называется SBAPI, как раз удовлетворяет требованиям KOL. В нем применена корректировка, которая как раз и нужна для правильного отображения. Ни о чем не говорит? И чем не устраивает такая корректировка, если она приводит к желаемому результату?
  • QAZ (17.05.10 20:49) [96]

    > Достижимость SBPosition = SBMax

    для этого существует тракбар,
    а скролбар существует чтоб прокручивать чтолибо в области отображения, и в нем SBMax=число элементов, а Page=число видимых элементов
    и неважно строки это или попиксельный прокрут картинки все логично и работает как надо

    > траблы с пересчетом скролл-позиций я имел немаленькие

    траблы были видимо изза того, что Вы считали,что если есть Max то Position обязан его достигать,но это не так, этим кокраз ведает Page

    > И чем не устраивает такая корректировка, если она приводит
    > к желаемому результату?

    да тем что это антикоректировка Вашей коректировки
    и тем что не надо трогать святое, как в винде сделано так и должно быть,а уш если приспичило чтоб было  SBPosition = SBMax то Page:=1 и будет Вам счастие без всяких корекций
    или делайте чисто для своих целей,а не глобально
  • QAZ (17.05.10 21:21) [97]

    >  и в нижней Label3 (значение, полученное GetScrollInfo из
    > того же мемо).

    а вот тут неправда получается кокраз из SBKOL т.к. он последний

    procedure TForm1.ListView1LVStateChange(Sender: PControl; IdxFrom,
     IdxTo: Integer; OldState, NewState: Cardinal);
    var i: Integer;
       procedure UpdScr( Ctl: PControl; F: DWORD );
       var j: Integer;
       begin
           GetScrollInfo( Ctl.Handle, F, si );
           si.nPos := i;
           j := SetScrollInfo( Ctl.Handle, F, si, TRUE );
           Form.Caption := 'Current pos = ' + Int2Str(j);
           GetScrollInfo( Ctl.Handle, F, si );
           Label3.Caption := 'nMax=' + Int2Str(si.nMax) +
               ' nPage=' + Int2Str(si.nPage) +
               ' nPos='  + Int2Str(si.nPos);
       end;
    begin
       i := ListView1.LVCurItem;
       if i < 0 then Exit;
       UpdScr( Memo1, SB_VERT );
       UpdScr( SBAPI, SB_CTL );
       UpdScr( SBKOL, SB_CTL );
    end;

  • QAZ (17.05.10 21:38) [98]
    такчто
    "Достижимость SBPosition = SBMax могу продемонстрировать сейчас"
    не удалось
  • QAZ (18.05.10 14:02) [99]

    > По крайней мере, траблы с пересчетом скролл-позиций я имел
    > немаленькие, когда делал ScrollBox.

    я вот даже не представляю какие там могли быть траблы
    вот пример моего самопального "ScrollBoxа"
    http://narod.ru/disk/20873205000/ScrollBoxTEST.rar.html
 
Конференция "KOL" » Версия 2.90 [Delphi, Windows]
Есть новые Нет новых   [118487   +56][b:0][p:0.002]