Добро пожаловать,
Поиск
Над каким элементом находится курсор мыши ?
Навигация в ListBox при множественном выборе
Как сделать так, чтобы при наведении на элемент, длина которого больше длины самого ListBox, появлялся Hint ?
Как узнать количество строк(записей) ?
Прокрутка ListBox на одну строку вниз
Удаление выбранных элементов в TListBoxНад каким элементом находится курсор мыши ?
Код // поместите на форму Form1 компонент ListBox1 и напишите
// следующий обработчик события OnMouseMove:
void __fastcall TForm1::ListBox1MouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{
if(ListBox1->ItemAtPos(TPoint(X, Y), true) != -1)
Form1->Caption = ListBox1->Items->Strings[ListBox1->ItemAtPos(TPoint(X, Y), true)];
}
Навигация в ListBox при множественном выборе
Код // разместите на форме ListBox1, установите у него
// свойство MultiSelect в true, добавьте в ListBox1
// несколько элементов, разместите также на форме
// кнопку Button1, в обработчике события OnClick
// которой напишите следующий код, который будет
// выводить сообщение для каждого элемента ListBox,
// выбранного пользователем:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
for(int i = 0; i < ListBox1->Items->Count; i++)
if(ListBox1->Selected[i])
ShowMessage(ListBox1->Items->Strings[i]);
}
Как сделать так, чтобы при наведении на элемент, длина которого больше длины самого ListBox, появлялся Hint ?
Код // Где нибудь на показывании формы :
Application->HintPause = 0;
Application->HintShortPause = 0;
Application->HintHidePause = 10000000000;
Application->OnShowHint = TIn4Form->DoShowHint;
void __fastcall TIn4Form::DoShowHint(System::AnsiString &HintStr, bool
&CanShow, THintInfo &HintInfo)
{
CanShow = true;
if (HintInfo.HintControl == ListBox1 )
{
if( Mouse->Capture )
{
CanShow = false;
return;
}
HintInfo.ReshowTimeout = 100;
/*HintInfo.HintColor = clAqua;// Changes only for this hint*/
TPoint pnt;
SIZE strsize;
int numstr = ListBox1->ItemAtPos(HintInfo.CursorPos,true);
if(numstr<0)
{
CanShow = false;
Application->HideHint ();
return;
}
HintStr = ListBox1->Items->Strings[numstr];
strsize = ListBox1->Canvas->TextExtent(HintStr);
if(strsize.cx<=ListBox1->ClientWidth)
{
CanShow = false;
Application->HideHint ();
return;
}
pnt.x = -1;
pnt.y =
int(HintInfo.CursorPos.y/ListBox3->ItemHeight)*ListBox1->ItemHeight - 3;
pnt = ListBox3->ClientToScreen(pnt);
HintInfo.HintPos.x = pnt.x;
HintInfo.HintPos.y = pnt.y;
HintInfo.HintMaxWidth = Screen->Width-pnt.x;
/*HintInfo.HideTimeout = 100;*/
}
}// Не забудьте поставить ShowHint у интересующего ListBox-а
Как узнать количество строк(записей) ?
Код int i = ListBox1->Items->Count;
Прокрутка ListBox на одну строку вниз
Код // Чтобы прокрутить содержимое списка (TListBox) на одну
// строку вниз, напишите следующий код:
SendMessage(ListBox1->Handle, WM_VSCROLL, SB_LINEDOWN, 0);
Удаление выбранных элементов в TListBox
Код // Напишите следующий код:
for(int i = ListBox1->Items->Count-1; i >= 0; i--)
if(ListBox1->Selected[i])
ListBox1->Items->Delete(i);
Обработка массива Edit-компонентов
Код Procedure DoSomethingWithEditControls;
Var K: Integer;
EditArray: Array[0..99] of Tedit;
begin
Try
For K:= 0 to 99 do
begin
EditArray[K]:= TEdit.Create(Self);
EditArray[K].Parent:= Self;
SetSomeOtherPropertiesOfTEdit; {Устанавливаем необходимые свойства TEdit}
Left:= 100; Top:= K
;
OnMouseMove:= WhatToDoWhenMouseIsMoved; {Что-то делаем при перемещении мыши}
end;
DoWhateverYouWantToDoWithTheseEdits; {Делаем все что хотим с полученным массивом Edit-компонентов}
Finally
For K:= 0 to 99 do EditArray[K].Free;
end;
Примечание: узнать доступные свойства компонента можно непосредственно в инспекторе объектов и (или) в текстовом режиме вашей формы (щелкните на форме правой кнопкой мыши и выберите пункт View as Text)
Внимание! Если у вас не получилось найти нужную информацию, используйте
рубрикатор или воспользуйтесь
поиском .
книги по программированию исходники компоненты шаблоны сайтов C++ PHP Delphi скачать