Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как организовать Имя = Значение в CheckListBox [D7]


Страницы:   1 2

Neket ©   (2009-06-29 16:33:00) 

Добрый день. Подскажите как организовать в CheckListBox что-то типа Имя = значение. А именно, к примеру есть CheckListBox1 такого плана
_
|_| Имя1
_
|_| Имя2
_
|_| Имя3

И если я ставлю галочку на любом из этих имен у меня выскакивает OpenDialog и мне нужно организовать присвоение пути к файлу выбранному имени... Т.е. Имя2 = С:\KillAll.bat


sniknik   (2009-06-30 01:31:00) [21]

> чревато глюками.
поэтому и предупредил про глобальность переменных, константы и изменения. если не понимать, что происходит, то понятно легко глюков понаделать, как и со всем остальным.

> Тем более что из сабжа никак не следует необходимость "синхронизации" двух списков строк..
необходимость синхронизации следует из того простого факта, что списков будет 2 один в компоненте другой для значений, а значит и значения в них добавлять/удалять нужно строго синхронно чтобы индексы(номер в списке) совпадали.


Германн   (2009-06-30 01:17:00) [22]


> StringList для начинающих проще и надежнее.

+1
Тем более что из сабжа никак не следует необходимость "синхронизации" двух списков строк..
P.S. Странно что Тимур отмалчивается. :)


Юрий Зотов   (2009-06-30 00:09:00) [23]

> sniknik ©   (29.06.09 23:01) [12]
> откуда ты OpenDialog.FileName взял

Из сабжа, вестимо. Поэтому и говорю - чревато глюками. StringList для начинающих проще и надежнее.


sniknik   (2009-06-29 23:01:00) [24]

p.s. если против то попробуй так использовать локальные переменные строк, и посмотри что будет.
(строки обязательно, т.к. именно я их предлагал для автоматизации, когда говорил, что можно избежать выделения памяти/освобождения при использовании Items.Objects)
p.p.s. откуда ты OpenDialog.FileName взял, не понятно, я его вообще не упоминал. не, можно конечно и в нем "сохраненную" так строку использовать, но это не принципиально, можно и для другого. тема то не про то как она будет использоваться, она про то как "организовать".


sniknik   (2009-06-29 22:47:00) [25]

> Какие глобальные? Какие константы?
те которые пойдут туда -> AddObject('Имя1', TObject(PChar( 'С:\rillAll.bat')));
а OpenDialog.FileName тут совсем не причем.


Юрий Зотов   (2009-06-29 22:29:00) [26]

> sniknik ©   (29.06.09 20:41) [8]

Какие глобальные? Какие константы? Это же OpenDialog.FileName.


Neket   (2009-06-29 20:48:00) [27]

Спасибо огромное


sniknik   (2009-06-29 20:41:00) [28]

> не забыв выделить память в куче и освободить потом
использовать строки, и заботится об этом не будет нужды, главное чтобы они были глобальными или константами, ну и не менять их через переменную после присвоения "адреса". (зачем и почему пусть сам разберется).

> Проще завести массив строк или еще один TStrings
не, с Items.Objects все таки проще

procedure TForm1.FormCreate(Sender: TObject);
begin
 with CheckListBox1.Items do begin
   AddObject('Имя1', TObject(PChar('С:\rillAll.bat')));
   AddObject('Имя2', TObject(PChar('С:\kill_ne_all.bat')));
   AddObject('Имя3', TObject(PChar('С:\kill.bat')));
   AddObject('Имя4', TObject(PChar('С:\kill_simple_kill.bat')));
 end;  
end;

procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
begin
 with TCheckListBox(Sender) do
   ShowMessage(PChar(Items.Objects[ItemIndex]));
end;


и все, а со вторым TStrings еще синхронизироваться постоянно


Юрий Зотов   (2009-06-29 19:54:00) [29]

Проще завести массив строк или еще один TStrings.


Neket   (2009-06-29 19:08:00) [30]

Эммм ну дайте кусочек кода ПЛЗ


clickmaker   (2009-06-29 18:30:00) [31]

Items.Objects
присвоить можно что угодно, не забыв выделить память в куче и освободить потом


Neket   (2009-06-29 17:20:00) [32]

Неее нужно наоборот...

_
|_| Сканы паспорта
_
|_| Сканые пенсионко
_
|_| Другое

Поставили галочку к примеру на "Сканы паспорта"  вылетает Опендиалог и
FNAME присваивается  CheckListBox1.Items.Какое_нибудь_свойство.[CheckListBox1.ItemIndex] где (FNAME:=OpenDialog1.FileName)


123321   (2009-06-29 16:53:00) [33]

вот так вроде? или нет?
procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
var
 ss: string;
begin
 case CheckListBox1.ItemIndex of
   0: ss:='C:\killall.bat';
   1: ss:='C:\kill_ne_all.bat';
   2: ss:='C:\kill.bat';
   else: ss:='C:\killall.bat';
 end;
 OpenDialog1.FileName:=ss;
 if OpenDialog1.Execute then ShowMessage(OpenDialog1.FileName);
end;


Neket   (2009-06-29 16:51:00) [34]

А можно поподробнее? Я уже подумывал на эту тему но как имеено это реализовать недопонял. плз подскажите


Palladin   (2009-06-29 16:39:00) [35]

1. Завести TStringList соответствий
2. Использовать Objects у Items:TStrings


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо