Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];

Вниз

Не ставятся никакие пакеты   Найти похожие ветки 

 
=BuckLr=   (2007-06-01 16:02) [40]


> какие-то Directories

Тока не в пакет! В делфи саму


 
domo   (2007-06-01 17:44) [41]

Спасибо за советы, пойду пробовать


 
domo   (2007-06-04 15:59) [42]

1. Попробовал и дожен сказать =BuckLr=  еще раз спасибо - твой совет точно в десятку:
после применения этого совета компонент установился. Может это и еще кому-то поможет.
Но кто оставил такой "камень преткновения" и почему ошибку не исправили? Хотя если судить по стилю некоторых,
то и неудивительно: горстка желания исправлять неточности, ошибки и помогать тем кто просит помощи
и гора желания "ржать" и "просто фигеть".

2. Здесь кто-то подскажет? У меня не получается. Текст из файла есть только в Memo1,
а в ListBox1 пусто. Кроме того нет гориз.лифта в ListBox1. А в Memo1 текст есть, но не
правится, хотя атрибута "только чтение" я не ставил. И в панель статуса StatusText[2] не
хочет ничего писать, почему? Конечно, для кого-то это очень просто, так я у них и спрашиваю -
вам просто, подскажите другим.
Делаю так:

type
   ListBox1: TKOLListBox;
   OpenSaveDialog1: TKOLOpenSaveDialog;
   Toolbar1: TKOLToolbar;
   Memo1: TKOLMemo;
var
 NicDicFile, ExtRus: KOLString;
implementation
procedure TForm1.ProgStartHere(Sender: PObj);{Старт обработки}
var
s: string;
begin
Form1.Form.StatusText[0]:="Строка статуса создана ";
end;

procedure TForm1.ToolbarClicked(Sender: PObj);
var
s: string;
sList: pStrList;
DicList: TStrList;
List: TAList;
begin//ToolbarClicked
if Toolbar1.RightClick then begin{3} beep (150, 100) end{3}
else begin{4}
 case Toolbar1.CurIndex of
  0: begin{c5}
   if OpenSaveDialog1.Execute then
    begin
     NicDicFile:=OpenSaveDialog1.Filename;
     sList:= NewStrList;
     if sList.LoadFromFile(NicDicFile) then begin{if1}
      Memo1.Text:= SList.Text;
      ListBox1.Text:= SList.Text;
     end{if1};
     SList.Free;
     s:=Int2Str(ListBox1.Count);
     Form1.Form.StatusText[2]:=^s;
    end else beep (150, 100);
    end{c5};
  1: beep (2000, 10);
  2: beep (3000, 10) ;
 16: Form.Close;
 end{case Toolbar1.CurIndex};
end{4};
end;//ToolbarClicked

4. А здесь что, других уроков кроме тех 13, что были на сайте по КОЛ пару лет назад, нет?


 
=BuckLr=   (2007-06-04 20:02) [43]

Мы ржём, потому что ржачно и фигеем потому что офигительно :)

Ты не обижайся, но тебе и правда под всл надо ещё поработать. Вот, к примеру, нафига тут
Form1.Form.StatusText[2]:=^s;
когда надо
Form1.Form.StatusText[2]:=Char(s);
И не будет работать, коль с приведением типов проблемы...

А так:
ListBox1.Text:= SList.Text;
строки в листбокс не добавляются. Смотри описание метода
{* |<#edit>
      |<#memo>
      The same as Caption. To make more convenient with Edit controls. For
      Rich Edit control, use property RE_Text. }
значит, метод только для полей редактирования, а не для листбокс, комбобокс и иже с ними, это списковые объекты. Добавлять надо методом Add. Тебе надо организовать цикл, в котором будешь добавлять строки по очереди.

Вот ещё. Зачем обрабатывать щелчок на самом тулбаре, если проще обрабатывать щелчок на кнопке, которая на тулбаре?


 
domo   (2007-06-05 14:51) [44]

2. За советы спасибо, буду разбираться. И какие там обиды, просто я считаю, что ошибки и неточности лучше исправлять, а если просят помощи - лучше помогать. Ну, а кто-то считает наоборот, пусть...
С приведением типов и правда проблемы. Цикл я попробую организовать, но будет ли это быстро - там файл из ~150 тыс строк... Обрабатываю щелчок на самом тулбаре я потому, что так мне вроде проще (хотя может это не так). И как в ListBox1 включить гориз.лифт?


 
=BuckLr=   (2007-06-05 17:21) [45]

Полоса прокрутки - что-то вроде LB_SETHORIZONTALEXTENT, поищи. А насчёт скорости перебора, так это вроде не проблема. Хотя я тоже не спец, не уверен, что это так...


 
domo   (2007-06-07 16:34) [46]

1. Никто не ответил как устанавливать компоненты где нет *.dpk, а только файл KOLxxx.pas или KOLxxx.pas и MCKxxx.pas. Я попробовал создать новый пакет, добавить туда файлы KOLxxx.pas и MCKxxx.pas, откомпилировать этот пакет и затем установить его. Но не получилось - фатальных ошибок вроде и не заметил, а новых значков на панелях компонентов не появилось. Как правильно делать установку и как проверить, что установка успешна?

2. Попробовал, но компилятор сказал, что, видно, проблемы с приведением типов есть не только у меня. Работает лишь такой вариант, возможно так и надо:
  s:="Обработано строк: "+Int2Str(ListBox1.Count);
  Form1.Form.StatusText[1]:=PChar(s);

Цикл сделал, даже два (какой из них правильный?):
      for i:=0 to sList.Count-1 do ListBox1.Add(sList.Items[i]);
      for i:=0 to sList.Count-1 do ListBox1.Items[i]:=sList.Items[i];
Но я оказался прав - очень медленно работает - около 20 сек (а в Memo1 - за 2 сек). Можно ли ускорить этот процесс, хотя бы в 4-5 раз? Специалисты, подскажите.

С обработкой нажатий кнопок (а не панели) я не разобрался, но заметил, что подсказки при наведении мыши на другие 16 кнопок те же, что и при наведении на первую. Проверил свойство панели tooltips - там 17 строк подсказок, ShowTooltips установлено в true, а подсказок нет (есть, но тe же, что для первой кнопки). Посоветуйте, как исправить.

Свойства LB_SETHORIZONTALEXTENT и даже LB_SETHORIZONTAL найти не смог. Обыскал все файлы *.pas в ветке КОЛ и не нашел. Как добавить гор. лифт в ListBox?


 
=BuckLr=   (2007-06-07 17:01) [47]


>  проблемы с приведением типов есть не только у меня

У меня проблем нет. Если речь про PChar вместо Char, то думать надо головой, что такое один символ и что такое целая цепочка.


> Но я оказался прав - очень медленно работает

Кажется это действительно лажа. Как ускорить до уровня мемо, я думаю,  посмотреть, как само мемо это делает (в самом loadfromfile кажется)


> Свойства LB_SETHORIZONTALEXTENT и даже LB_SETHORIZONTAL
> найти не смог

И не найдёшь. Этоне из КОЛ. А вообще я торможу, в кол есть для этого loHScroll. Правда, у меня что-то не заработало. Раньше, помнится, всё было нормально. Владимир, не проверите ли эту опцию? И, кстати, я нашёл проблемку с генерацией в МСК - вместо loHScroll генерируется loHScrll. Приходилось каждый раз "о" добавлять :)


 
=BuckLr=   (2007-06-07 17:05) [48]


> очень медленно работает

Ах, да. У контролов есть BeginUpdate и EndUpdate.


 
domo   (2007-06-11 17:07) [49]

Да, loHScroll и правда не работает. А что про BeginUpdate и EndUpdate, я что-то не понял, объясни, пожалуйста.


 
SergeR ©   (2007-06-11 17:56) [50]

RTFM.
KOL.pas:

procedure BeginUpdate;
{*   |<#treeview>
      |<#listview>
      |<#richedit>
      |<#memo>
      |<#listbox>
      Call this method to stop visual updates of the control until correspondent
      EndUpdate called (pairs BeginUpdate - EndUpdate can be nested). }


 
domo   (2007-06-12 14:03) [51]

Так я вроде же пробовал вызывать
BeginUpdate;
при вызове
ListBox1.Add(sList.Items[i]);
- скорость осталась низкой (т.е. прежней). Может что не так делаю? Объясните, как правильно (когда) вызывать этот метод? И даже если я ничего не вызываю, ListBox1 (и вся прога) перестает реагировать на что-либо до окончания добавления всех строк в ListBox1 (около 20 сек).


 
ANTPro ©   (2007-06-12 14:53) [52]

> [51] domo   (12.06.07 14:03)

Applet.ProcessMessages


 
Vladimir Kladov   (2007-06-12 17:57) [53]

Список list box больше чем 100 элементов - это несуразица. И если уж так сильно хочется, есть виртуальный list box. Еще лучше использовать виртуальный list view, для него уже даже событие готово (OnLVData).


 
domo   (2007-06-13 15:00) [54]

Сильно мне не хочется, просто надо же где-то строки прокручивать. Думал, что в  listbox лучше всего. Что ж, попробую теперь по другому, может выйдет. А что с гор. лифтом?


 
Vladimir Kladov   (2007-06-13 20:49) [55]

list box - это для совместимости, с времен Win3.1. С выходом 95 MS рекомендовал переходить на list view.


 
=BuckLr=   (2007-06-13 23:14) [56]


> С выходом 95 MS рекомендовал переходить на list view.

Уже лет 12 прошло, и всё никак не перейдут :) МС вааще много чего советует, если ко всему прислушиваться... Но я согласен с тем, что листвью лучше - с ним просто легче работать, а возможностей хоть отбавляй. И никаких ограничений на строчки. Самое то, что тебе нужно (2 domo)


 
domo   (2007-06-14 11:31) [57]

2. Попробовал, но не получилось. Не работал я раньше с виртуальными списками, поэтому прошу тех, кто работал, дайте пример создания списка и работы с OnLVData.
Пока у меня стоит только такое:

listviewMy: pControl;
   listviewMy:=NewListView(form, lvsList, [lvoownerdata, lvoRowSelect, lvogridlines], nil,nil,nil).SetPosition(290, 70).SetSize(140, 120).BringToFront;

1. Почему-то слетел КОЛ. Делал так:
- скачал вчера kol_mck.7z с kolnmck.ru
- скопировал все файлы оттуда (кроме оканчивающихся на d2, d3, d4, d6, d7) в папку с КОЛ
- в Д5 закрыл все и открыв MirrorKOLPackage.dpk нажал "Построить"
- на вопрос Д5 "Сохранить изменения в MirrorKOLPackage.dpk?" нажал Нет.

Ошибок не было, кроме сообщения, что ранее установленных доп.компонентов BAPFileBrowser теперь почему-то не будет.
После этого вкладки КОЛ и КОЛ_компоненты (там были BAPFileBrowser и BAPDriveBox) исчезли и проект перестал компилироваться. К сожалению, после этого я запаниковал и начал нажимать все подряд:  "Построить", "Компилировать", "Установить", менять Опции пакета. В результате вкладка КОЛ появилась, доп.КОЛ_компоненты - нет, а проект стал работать. Однако, я не успел заметить, что же именно такого правильного я сделал,  поэтому прошу помощи, а именно - объясните, что должно быть в Опциях проекта MirrorKOLPackage.dpk перед тем, как нажимать "Построить" или "Установить". Именно _перед_, а не потом, особенно поля в Directories/Conditionals: Unit output directory, Search path, Conditional defines, Unit aliases, может еще что (у меня они все пустые). И надо ли в конце установки сохранять изменения в MirrorKOLPackage.dpk (или другом пакете)?

Кстати, при этих экспериментах я выяснил (оказывается, я это записал), что за версия КОЛ у меня стоит и где я ее взял  - кто-то раньше у меня спрашивал. Вот: пакет koldistro-0.11.exe с сайта http://heanet.dl.sourceforge.net/sourceforge/xsdnyd/


 
Vladimir Kladov   (2007-06-14 15:39) [58]

build. Читайте FAQ.


 
domo   (2007-06-14 17:49) [59]

1. Кладову В: Дайте же наконец ссылку на этот неуловимый FAQ. А то в моем FAQ "Часто задаваемые вопросы о KOL и MCK" написано только:

"Не забудьте также указать в опциях пакета "Design time only" и "Rebuild as needed" - это касается в том числе любой другой версии Delphi (начиная с D3)."

Так я об этом и не спрашиваю, я так и делаю. А об Unit output directory, Search path, Conditional defines, Unit aliases - о чем я спрашиваю - там ни слова.

2. Может ли кто-нибудь помочь в этом вопросе и написать несколько строчек примера работы? Или, если очень не хочется, дайте хотя бы ссылку на FAQ где описана работа с виртуальным ListView и событием OnLVData, попробую разобраться.

для =BuckLr=: я понял, что мне это подойдет, но с примерчиком я пойму гораздо лучше...


 
ANTPro ©   (2007-06-14 20:34) [60]

> [59] domo   (14.06.07 17:49)

http://www.kolnmck.ru/ - тебе этого мало?


 
Vladimir Kladov   (2007-06-14 22:27) [61]

А об Unit output directory, Search path, Conditional defines, Unit aliases - о чем я спрашиваю
Об этом-то зачем спрашивать? Установка пакета в Delphi обычная. Просто ничего не трогайте, про что не написано. Search path разве что указать надо, если он у вас отличается от C:\kol, так это и так понятно. Меня вводят в недоумение программисты, ставящие компонент, и не знающие, что делать, когда Delphi выводит сообщение об ошибке типа "файл xxx.dcu" не найден. Какие мануалы нужны, художественная литература, чтобы постичь элементарное?

Другое дело, что мало кто знает даже из тех кто любит  ставить подряд на всякий случай десятки пакетов (надо-не надо. Как-то в одной конференции встретил такой вопрос от "программиста" с позволения сказать: у него больше 999 компонентов в линейку ставиться не захотелось, то был кажись еще Delphi3), что потом делать, когда несколько пакетов увязаны друг на друга, и из-за ребилда одного вдруг выгружаются повязанные с ними.

Ответ давно найден (для MCK работает). Все модули - в один пакет, и после обновления - Rebuild. О том, что нужен именно Build, сказано в инструкциях к MCK, русской и английской. И это надо бы в FAQ внести, но вот незадача. FAQ - это список вопрос-ответ. Какой такой вопрос должен соответствовать ответу, не совсем понятно. "У меня не получается..." что не получается-то? Если все по инструкции, то все как раз получается. Если действовать осторожно, и начать работать только с одного пакета MCK, то проблем коллизий вообще не возникает. Я бы озаботился сей проблемой, но мне как-то основного пакета по самое не хочу для работы хватает. Даже если очень надо, то вовсе нет надобности ставить доп. компоненты как пакеты. Их и в Run-time создать можно всегда. Я так и делаю, когда какой-нибудь trackbar потребуется. Чтобы GRushControls задействовать, с ToGRush можно MCK-часть от GRush и не ставить. Чем меньше на линейке компонентов, тем Delphi быстрее грузится (и меньше жрет памяти, и шустрее работает) - давно известный факт.


 
homm ©   (2007-06-14 22:48) [62]

> Какой такой вопрос должен соответствовать ответу, не совсем
> понятно. "У меня не получается..." что не получается-то?

1) Я устанавливаю версию поверх старой. При работе все падает.
2) Я работал с чистым КОЛ, решил установить МСК, еперь у меня все падает.
3) Я поставил КОЛ и МСК, но после компиляции программа весит на 20 Кб больше, чем написано в предъидущем вопросе про размер получившехся испоняемых хайлов.


 
Vladimir Kladov   (2007-06-15 16:45) [63]

Еще раз попробую объяснить. Я не могу писать рецепт на исправление ошибки, которой сам не видел. У меня ничего не падает. И размер одинаковый, независимо от наличия MCK, в приложении без MCK (приложение MCK тоже должно компилироваться одинаково без MCK, но я не пробовал). И получается: есть ответ - делайте Build, а не Compile, если переходите от проекта к проекту, от проекта к пакету, от проекта к пакету. В Книге о KOL я об этом написал и рахэяснил причину: Delphi не видит необходимости пересобрать dcu-файл, хотя такая необходимость есть, вот и все.


 
domo   (2007-06-15 16:57) [64]

Спасибо, я попробую не трогать то, о чем не написано. Но все-таки так стало гораздо понятнее, когда явно указано - что трогать, а что не трогать. А то всё "смотрите в FAQ", FAQ, а выясняется, что в том FAQ и нет этого.

ANTPro ©: Это слишком неконкретно, такой ответ на вопрос любой напишет. Конкретнее, пожалуйста.

И еще я спрашивал, почему подсказки для кнопок на панели инструментов все одинаковые - как для первой (см. выше). Ответьте, пожалуйста.


 
Vladimir Kladov   (2007-06-15 19:10) [65]

я спрашивал, почему подсказки для кнопок на панели инструментов все одинаковые

Не заметил такого вопроса. Вообще во многих форумах есть требование: 1 вопрос в теме. Как раз чтобы не пропускать мимо.

Ну, у меня подсказки разные, это точно. Вся штука в том, что тулбар можно настраивать очень разными способами. Я, например, предпочитаю надписей не делать, а надписи использовать как подсказки. Расскажите, как вы делаете.


 
domo   (2007-06-16 13:17) [66]

> Вся штука в том, что тулбар можно настраивать очень разными способами

Конечно. Я понимаю, что я делаю что-то неправильно (иначе и не спрашивал бы). Я делаю так:
- бросаю на форму компонент КОЛтулбар
- нажимаю кнопку Далее (с тремя точками), справа от свойства buttons для создания своих кнопок
- нажимаю кнопку Add, ввожу название своей кнопки и ВВОД.  Повторяю для каждой кнопки
- нажимаю Apply и закрываю окно Toolbar1 buttons
- меняю свойство showTooltips на true
- нажимаю Далее (с тремя точками) справа от свойства tooltips и ввожу столько строк подсказок, сколько создал кнопок
- запускаю прогу, а подсказка только одна (первая строка из tooltips, даже почему-то не все строки) для всех кнопок (т.е. это получается однострочная подсказка для всей панели КОЛтулбар, а не для кнопок на ней, как я ожидал). А как для каждой кнопки свою подсказку?

Но это еще мелочи, вот у меня не получается работа с виртуальным ListView (с listBox все работает, но медленно, да и Вы говорите, что это неправильный подход). Понятно, что нужно определить переменные нужного типа, инициализировать список (выделить память, указать какого типа данные там будут и как должен список выглядеть), заполнить его строковыми данными (они у меня читаются из файла и их около 150 тыс) и вывести список на форму, чтобы он был виден пользователю. Но как это сделать? Нужен пример, не работал я раньше с виртуальными списками.
Можете помочь?


 
имя   (2007-06-18 14:31) [67]

Удалено модератором


 
имя   (2007-06-18 14:32) [68]

Удалено модератором


 
имя   (2007-06-18 14:32) [69]

Удалено модератором


 
имя   (2007-06-18 14:32) [70]

Удалено модератором


 
Vladimir Kladov   (2007-06-18 18:37) [71]

Tooltips я поправил. До этого работал tooltip на самой кнопке.

Виртуальный list view - проще не бывает. Установить lvoOwnerData, назначить OnData и вернуть там Txt и прочие данные, от номера строки и номера колонки. Во время работы присвоить LVCount, чтобы list view "знал", сколько спрашивать. Храните строки где хотите. Хотя бы в StrList"е.

Нюанс. Если LVCount надо менять на ходу (lvsDetail, lvsDetailNoHeader), может проявляться бага от MS (проявляется и в VCL): первые строки могут оказаться пустыми. Чтобы не происходило такого, надо сначала очистить list view (LVCount := 0) и Update сделать, потом устанавливать новое значение. Еще помогает временная смена вида отображения.

(Кажется, я подзагорел на даче в этот выходной - выдалась погодка :) Правда, вечером опять ураганчик был, ну такое у нас малоснежное сибирское лето).


 
Galkov ©   (2007-06-18 20:15) [72]

Да и сегодня нормальная погода...


 
domo   (2007-06-19 11:08) [73]

2. Спасибо за ответ, пойду экспериментировать с tooltip и виртуальным списком. Я понимаю, из-за постоянной занятости писать примеры Вам особо некогда, надеюсь, если Вы говорите, что виртуальный список - это просто, то я смогу это сделать по Вашим подсказкам. Пока же я сделал обычный listview вот так:

var  ListView2: TKOLListView; i: integer; sList: pStrList;

  ListView2:=NewListView (Form, lvsDetail, [lvoRowSelect, lvoGridlines], nil, nil, nil).SetPosition(290,72).SetSize(180,130).BringToFront;
  ListView2.LVColAdd("N строки", taRight, 50);
  ListView2.LVColAdd("Сама строка", taLeft, 150);
  ListView2.BeginUpdate;
  for i:=0 to sList.Count-1 do if sList.Items[i][1]<>"/" then begin{i1}//если не комментарий, добавить в список
   ListView2.LVItemAdd("");
   ListView2.LVItems[ListView2.LVCount-1, 0] := int2str(ListView2 .LVCount); //нумерация строк
   ListView2.LVItems[ListView2.LVCount-1, 1] := sList.Items[i]; //сами строки (из sList, читаю из файла)
  end{i1};
  ListView2.EndUpdate;
  ...
  ListView2.Free;

К сожалению, сделал на чистом КОЛ, т.к. с зеркалом МСК для ListView разобраться не смог. Кроме того, пользоваться им все-равно сложно, т.к. он такой же медленный, как и тот ListBox1, что Вы критиковали раньше. Одно хорошо - есть гор.лифт. Кстати, Вы не ответили про гор.лифт в ListBox, где он там?

1. И еще про установку. Я перекачал FAQ, но туда так и не добавлено Ваше

"Search path разве что указать надо, если он у вас отличается от C:\kol" и то, что в настройках Conditional defines, Unit aliases "просто ничего не трогайте".

Почему бы все-таки явно не указать это в ФАК, ведь посмотрите сколько людей (не программистов, конечно) спотыкается на этой установке-переустановке. Или Вы просто не успели?

Также очень интересно Ваше замечание "Все модули - в один пакет, и после обновления - Rebuild". У меня есть несколько модулей, которые я хотел бы ставить всегда, сразу с КОЛ-МСК и чтоб при всех обновлениях КОЛ они сохранялись. Учитывая, что Вы говорите, что для того, чтобы внести вопрос в ФАК, его надо сформулировать, попробую сформулировать:

У меня есть любимые пакеты KOLxxx.pas и KOLyyy.pas, а также их зеркала MCKxxx.pas и MCKyyy.pas. Я хочу, чтобы они устанавливались вместе с КОЛ/МСК и появлялись в Дельфи на той же вкладке, что и стандартные компоненты КОЛ/МСК. Как это сделать?

Ответьте, пожалуйста. Уверен, многие будут Вам благодарны.


 
Дмитрий К ©   (2007-06-19 14:19) [74]

domo, взгляните на этот код
program VirtLV;

uses
 windows, KOL;

type
 PForm1 = ^TForm1;
 TForm1 = object(TObj)
   form, lv: PControl;
 public
   procedure lvOnLVData(Sender: PControl; Idx, SubItem: Integer;
             var Txt: KOL_String; var ImgIdx: Integer; var State: DWORD;
             var Store: Boolean);
 end;

var Form1: PForm1; sl: PStrList;

procedure NewForm1(var Result: PForm1; AParent: PControl);
begin
 New(Result, Create);
 with Result^ do
 begin
   form:=NewForm(AParent, "VirtLV").SetSize(400,300);
   applet:=form;
   sl:=NewStrList;
   form.add2autofree(sl);
   lv:=NewListView (form, lvsDetail, [lvoRowSelect, lvoGridlines, lvoOwnerData], nil, nil, nil).SetAlign(caClient);
   lv.LVColAdd("N строки", taRight, 80);
   lv.LVColAdd("Сама строка", taLeft, 220);
   lv.OnLVData:=lvOnLVData;
 end;
end;

{ TForm1 }

procedure TForm1.lvOnLVData(Sender: PControl; Idx, SubItem: Integer;
 var Txt: KOL_String; var ImgIdx: Integer; var State: DWORD;
 var Store: Boolean);
begin
 case SubItem of
   0: Txt:=int2str(Idx);
   1: Txt:=sl.Items[Idx];
 end;
end;

begin
 NewForm1(Form1, nil);
 sl.SetText(StrLoadFromFile(GetWindowsDir+"win.ini"), false);
 form1.lv.LVCount:=sl.Count;

 run(applet);
end.


 
domo   (2007-06-20 15:24) [75]

Я взглянул, и даже виртуальный список создал. Что можно сказать? Мой массив из сотен тысяч строк этот код съедает за доли секунды. Скорость просто поразительная! Огромное спасибо за пример.

Но есть несколько вопросов. Они, наверно, мелкие для Вас, может не захотите отвечать, но я все-таки спрошу, если есть возможность - ответьте пожалуйста:
- где и когда разрушается список sl? В form.add2autofree(sl) при закрытии программы? А если мне надо раньше, то вместо этого - sl.Free?
- что значит "false/true" из sl.SetText(StrLoadFromFile(GetWindowsDir+"win.ini"), false);?
- мне надо только строки - не комментарии, так я должен делать

case SubItem of
 0:
 1: if sl.Items[idx][1]<>"/" then Txt:=sl.Items[Idx];
end;

или

var sL2: pStrList; i,j: integer;
sL2:=NewStrList;
 j:=0;
 for i:=0 to sL.Count-1 do if sL.Items[i][1]<>"/" then begin{i2}
  sL2.Items[j]:=sL.Items[i];
  inc(j);
 end{i2};

или как?

- если я изменю какую-то строку / sL.Items[i]:=myString; / или добавлю строку / sL.Add(myString); / - как обновить список на форме или это произойдет автоматически?

- мне нужно отсортировать строки, удалить дубликаты - я должен сам писать эти функции (в принципе, это несложно для меня) или уже в КОЛ есть стандартные (может AnsiSort() работает?) и их нужно только подключить или как-то вызвать?

- это снова список строится только на КОЛ при выполнении, из-за этого сложно расположить его на форме - он ездит куда хочет. Если у меня на форме KOLTabControl с двумя закладками и этот список должен быть только не первой закладке как его привязать туда?


 
Дмитрий К ©   (2007-06-20 16:12) [76]

Список разрушается при уничтожении формы. Да, sl.Free. Только не уничтожайте список пока не уничтожен ListView к которому этот список привязан.

procedure SetText(const S: string; Append2List: boolean);
если Append2List = true, то строки добавляются к списку, в противном случае заменяют содержимое.

Сначала нужно избавиться от комментариев, т.к. количество строк ListView определяется количеством строк в списке.

Чтобы отразить изменения  списка в ListView нужно сделать
ListView.LVCount := sl.count;

У списка есть метод Sort.

Сделайте родителем  TabControl1.Pages[ 0 ]


 
domo   (2007-06-20 17:20) [77]

Дмитрию К: Еще раз большое спасибо за ответы. Пока все вроде бы ясно.


 
domo   (2007-06-21 11:21) [78]

Кладову В: Переустановил КОЛ и проверил Tooltips. Работает как часы - все подсказки на своих кнопках. Спасибо большое за исправление.

А вот про Update
> надо сначала очистить list view (LVCount := 0) и Update сделать, потом устанавливать новое значение
я не понял. Объясните пожулуйста как сделать Update.

И у меня вдруг резко прыгнул размер программы - с 40Кб до 3 МБ!  Кстати, весь мой список строк в файле, откуда я его читаю - всего 3Мб. Интересно, и что же это я мог такого сделать - ведь просто переустановил КОЛ, добавил вирт. список в программу и всё. Конечно, я много экспериментировал, но вроде все эксперименты вытер из кода... В каком хоть направлении искать?


 
mdw ©   (2007-06-21 12:14) [79]


> В каком хоть направлении искать?

uses


 
Vladimir Kladov   (2007-06-21 17:10) [80]

вы его случайно в виде ресурса к программе не подключили. Даже если подключить все модули VCL, 3 мбайта никак не получится. Разве только настроить использование отладочной информации для удалённой отладки (Remote debug) и Include TD32 debug info, и то, наверное, столько не будет.



Страницы: 1 2 3 вся ветка

Форум: "KOL";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.66 MB
Время: 0.041 c
2-1201695689
Surok
2008-01-30 15:21
2008.02.24
Как сделать DateTimePicker пустым?


2-1201937189
Urvin
2008-02-02 10:26
2008.02.24
Размер плюсиков в TTreeView


8-1174366789
Nikss
2007-03-20 07:59
2008.02.24
OpenGL


8-1174718381
San ciz
2007-03-24 09:39
2008.02.24
Скриншот видео


15-1200894105
Рамиль
2008-01-21 08:41
2008.02.24
Сколько, примерно, может стоить разработка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский