Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.13;
Скачать: CL | DM;

Вниз

ListBox с подсказкой   Найти похожие ветки 

 
ТехникПТО ©   (2005-01-30 14:27) [0]

Нужно сделать подсказку в ListBox"е... т.е. при навидении какого либо элемента высвечивалась дополнительная информация...
скажем описание или коментарий.. в Memo


 
Neznaika ©   (2005-01-30 14:41) [1]

Уважаемый ТехникПТО мне кажется что все вопросы возникающие у Вас по ходу написания программы Вы выкладыаете здесь... А как на счет самому подумать...?

По поводу вопроса: Приблизительно представляя высоту строки в Вашем Listbox-се и зная сколько пользователь может водить мышкой над ним в поиске нужной ему строки, думаю что постоянное мерцание подсказок в мемо как только проведешь мышкой на ListBoxom, будет как минимум раздражать, советую сделать активацию подсказки при выделении строки в ListBoxe. Это и проще и практичней...


 
ТехникПТО ©   (2005-01-30 14:55) [2]


> Уважаемый ТехникПТО мне кажется что все вопросы возникающие
> у Вас по ходу написания программы Вы выкладыаете здесь...
> А как на счет самому подумать...?

Сорь если напрягаю... НО я еще навичок в этом деле и сейчас работаю над довольно объемным и сложным проектом...
Базовые знания у меня только Паскаль... компьютерного образования 0, конечно кроме многолетнего стажа работы с компами... еще с 256 начинал :) а мне всего то 20 лет :)
о системе и железе знаю довольно много... многое додумываю сам ментодом научного тыка (я про процесс написания)...
и в конце концов я задаю не такие уж и сложные вопросы :)
был я на многих форумах.. но остановился на этом.. мне понравился здесь народ... как он отвечает на вопросы... самое главное быстро и правильно :) респект вам всем :)
если бы я щас работал с базами данных.. я бы не задавал подобных вопросов, а сделал бы связанные таблици и не парился.. но БД мне здесь не нужно...
P.S. Если напрягаю то сорри!!


> По поводу вопроса: Приблизительно представляя высоту строки
> в Вашем Listbox-се и зная сколько пользователь может водить
> мышкой над ним в поиске нужной ему строки, думаю что постоянное
> мерцание подсказок в мемо как только проведешь мышкой на
> ListBoxom, будет как минимум раздражать, советую сделать
> активацию подсказки при выделении строки в ListBoxe. Это
> и проще и практичней...


вы не поняли... под ListBox"oм есть Memo...
при выделении какой либо строки в ListBox"e должен быть комент в этом самом мемо...
как это реализовать?? как связать какую то конкретную строку в ListBox"e с определенным значением в Memo???


 
Neznaika ©   (2005-01-30 15:04) [3]

procedure listbox1.Click(la la la );
var i : integer;
begin
i:=-1;
If listbox1.ItemIndex > -1 then begin
i:=Listbox1.ItemIndex;
case i of begin
-1: memo1.text:="Выделите интересующий Вас элемент";
0:  memo1.text:="Вы выбрали первую строку сверху";
2: и т.д.
end;

Это первое что пришло в голову... :)


 
ТехникПТО ©   (2005-01-30 15:05) [4]


> procedure listbox1.Click(la la la );
> var i : integer;
> begin
> i:=-1;
> If listbox1.ItemIndex > -1 then begin
> i:=Listbox1.ItemIndex;
> case i of begin
> -1: memo1.text:="Выделите интересующий Вас элемент";
> 0:  memo1.text:="Вы выбрали первую строку сверху";
> 2: и т.д.
> end;
>
> Это первое что пришло в голову... :)

Очень интерестно :) а как это все хранить?? :)


 
Neznaika ©   (2005-01-30 15:15) [5]

Не понял ... что хранить?

Тект мемо? - да хоть в *.тхт
Или я вообще не понял Ваш вопрос...?


 
ТехникПТО ©   (2005-01-30 16:11) [6]

сделал :-P


 
Antonn ©   (2005-01-30 16:57) [7]


> еще с 256 начинал

круто, где такой откопали?


 
ТехникПТО ©   (2005-01-30 17:06) [8]


> круто, где такой откопали?

1990 год :)


 
SergP ©   (2005-01-30 17:29) [9]


>  [8] ТехникПТО ©   (30.01.05 17:06)
>
> > круто, где такой откопали?
>
> 1990 год :)


В  [7] Antonn ©   (30.01.05 16:57) очевидно мелось ввиду "еще с 256 начинал"


 
Baddelay   (2005-01-31 02:15) [10]

Когда-то я делал, что то подобное, весь текст у меня хранился в скрытом Мемо, и просто при выделении итема в Lb у меня считывало инфу с Мемо с таким же индексом, и вставляла его в Label(нужно WordWrap true). Только етот способ работает если в lb итемы неизменяются по ходу выполнения проги..


 
diabolik ©   (2005-01-31 07:33) [11]


> ТехникПТО ©   (30.01.05 14:27)  
> Нужно сделать подсказку в ListBox"е... т.е. при навидении
> какого либо элемента высвечивалась дополнительная информация...
> скажем описание или коментарий.. в Memo


> Baddelay   (31.01.05 02:15) [10]
> Когда-то я делал, что то подобное, весь текст у меня хранился
> в скрытом Мемо, и просто при выделении итема в Lb у меня
> считывало инфу с Мемо с таким же индексом, и вставляла его
> в Label(нужно WordWrap true). Только етот способ работает
> если в lb итемы неизменяются по ходу выполнения проги..


Я то же делал что-то подобное. Только для этого использовал не ListBox а ListView. Все данные хранились в типизированном *.dat файле. Было три колонки и четвертая скрытая (не отображалась). При выборе какого либо пункта по ListView данные в Edit отображались из 4 колонки. Просто и со вкусом. Если нужно поищу исходный текст...


 
ТехникПТО ©   (2005-01-31 08:50) [12]


> Я то же делал что-то подобное. Только для этого использовал
> не ListBox а ListView. Все данные хранились в типизированном
> *.dat файле. Было три колонки и четвертая скрытая (не отображалась).
> При выборе какого либо пункта по ListView данные в Edit
> отображались из 4 колонки. Просто и со вкусом. Если нужно
> поищу исходный текст...

Поищи плиз.. это будет получше чем я сделал :)
Я просто создаю файл txt с именем Itema :) и соответсвенно при наведении загружаю этот файл... но при изменении итема создаеться еще один текстовый фалй уже с новым именем а старый остаеться :( мусор :((


 
Neznaika ©   (2005-01-31 10:29) [13]

>>ТехникПТО ©   (31.01.05 08:50) [12]
>>но при изменении итема создаеться еще один текстовый фалй уже с новым именем а старый остаеться :( мусор :((

А удалять за собой мусор...Не?


 
ТехникПТО ©   (2005-01-31 10:38) [14]


> А удалять за собой мусор...Не?

лениво :) хотя можно и подумать :) хм... элементарно :)


 
Diabolik ©   (2005-02-01 05:09) [15]

2ТехникПТО - как обещал даю код


// определяем тип TBSelected как record (запись)
type
TBSelected = record
  Check : Boolean;      // здесь информация по checkbox из ListView
  Select1: String[50];  // Текст колонки №1
  Select2: String[10];  // Текст колонки №2
  Select3: String[255]; // Текст колонки №3
  Select4: String[150]; // Текст колонки №4
end;
// количество колонок необходимых к записи и длинну можно указать свою

// объявляем переменные
var F: file of TBSelected;
   ListItem: TListItem;
   Records: array[0..20] of TBSelected; // количество записей в файле
   BaseColumn: TListColumn;

// добавление колонок в ListView
procedure TSB.FormCreate(Sender: TObject);
var INI: TIniFile;
begin
INI := TIniFile.Create(ExtractFilePath(ParamStr(0))+"Base.ini");
BaseColumn := BaseList.Columns.Add;
BaseColumn.Caption := INI.ReadString("BaseListColumns","First","Имя файла");
BaseColumn.Width   := INI.ReadInteger("BaseListColumns", "First.width", 92);
BaseColumn := BaseList.Columns.Add;
BaseColumn.Caption := INI.ReadString("BaseListColumns","Second","Открывать при старте");
BaseColumn.Width   := INI.ReadInteger("BaseListColumns", "Second.width", 127);
BaseColumn.Alignment := taCenter;
BaseColumn := BaseList.Columns.Add;
BaseColumn.Caption := INI.ReadString("BaseListColumns","Therd","Описание");
INI.Free;
end;

// процедура чтения из файла
procedure TSB.LoadDBList(Sender: TObject);
var Rec: TBSelected;
begin
 AssignFile(F, ExtractFilePath(ParamStr(0))+"BaseList.dat");
 Reset(F);
 try
   while not Eof(f) do begin
     Read(F, Rec);
       with BaseList do begin
           ListItem := Items.Add;
           ListItem.Checked := Rec.Check;
           ListItem.Caption := Rec.Select1;
           ListItem.SubItems.Add(Rec.Select2);
           ListItem.SubItems.Add(Rec.Select3);
           ListItem.SubItems.Add(Rec.Select4);
       end;
   end;
 finally
   CloseFile(F);
 end;
end;

// процедура записи в файл
procedure TSB.SaveDBList(Sender: TObject);
var I: Integer;
begin
 AssignFile(F, ExtractFilePath(ParamStr(0))+"BaseList.dat");
 Rewrite(F);
 try
   with BaseList do
     for I:= 0 to Items.Count-1 do
       begin
         Records[I].Check   := Items.Item[I].Checked;
         Records[I].Select1 := Items.Item[I].Caption;
         Records[I].Select2 := Items.Item[I].SubItems.Strings[0];
         Records[I].Select3 := Items.Item[I].SubItems.Strings[1];
         Records[I].Select4 := Items.Item[I].SubItems.Strings[2];
         Write(F, Records[I]);
       end;
 finally
   CloseFile(F);
 end;
end;

// добавление записи из файла в listview
procedure TSB.FormActivate(Sender: TObject);
begin
BTAdd.Glyph.LoadFromFile(ExtractFilePath(ParamStr(0))+"images\button\sb - add.bmp");
BTDelete.Glyph.LoadFromFile(ExtractFilePath(ParamStr(0))+"images\button\sb - delete.bmp");
BTUp.Glyph.LoadFromFile(ExtractFilePath(ParamStr(0))+"images\button\sb - up.bmp");
BTDown.Glyph.LoadFromFile(ExtractFilePath(ParamStr(0))+"images\button\sb - down.bmp");
BTOk.Glyph.LoadFromFile(ExtractFilePath(ParamStr(0))+"images\button\sb - ok.bmp");
BTCancel.Glyph.LoadFromFile(ExtractFilePath(ParamStr(0))+"images\button\sb - cancel.bmp");
BTAdd.Margin    := 10;
BTDelete.Margin := 10;
BTUp.Margin     := 10;
BTDown.Margin   := 10;
BTOk.Margin     := 16;
BTCancel.Margin := 3;
LoadDBList(Self);
BaseList.SetFocus;
if BaseList.Items.Count <> 0
then begin
       BaseList.Selected := BaseList.Items.Item[0];
       BaseList.ItemFocused := BaseList.Selected;
       BaseList.Selected.Selected := true;
     end
else exit;              
end;

// вывод данных из невидимой колонки в строку Edit
procedure TSB.BaseListSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean);
begin
 If Selected
 then EditPath.Text := BaseList.Selected.SubItems.Strings[2]
 else EditPath.Text := "";
end;


Думаю смысл понятен??



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

Текущий архив: 2005.02.13;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.069 c
1-1106776100
Urvin
2005-01-27 00:48
2005.02.13
TDBGrid


14-1106309576
sniknik
2005-01-21 15:12
2005.02.13
От чего зависит drag &amp; drop ?


14-1106399734
Чеширский_Кот
2005-01-22 16:15
2005.02.13
Платеж


6-1101545732
JR
2004-11-27 11:55
2005.02.13
Знатокам WinSock


14-1106286296
Жук
2005-01-21 08:44
2005.02.13
Музыка из "Братьев Блюз"