C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 ListBox / Работа с компонентами / Borland C++

  1. Над каким элементом находится курсор мыши
  2. Навигация в ListBox при множественном выборе
  3. Как сделать так, чтобы при наведении на элемент, длина которого больше длины самого ListBox, появлялся Hint
  4. Как узнать количество строк(записей)
  5. Прокрутка ListBox на одну строку вниз
  6. [+] Удаление выбранных элементов в TListBox
  1. Над каким элементом находится курсор мыши

    // поместите на форму 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)];
    }

  2. Навигация в 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]);
    }

  3. Как сделать так, чтобы при наведении на элемент, длина которого больше длины самого 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-а


  4. Как узнать количество строк(записей)

    int i = ListBox1->Items->Count;

  5. Прокрутка ListBox на одну строку вниз

    // Чтобы прокрутить содержимое списка (TListBox) на одну
    // строку вниз, напишите следующий код:
    SendMessage(ListBox1->Handle, WM_VSCROLL, SB_LINEDOWN, 0);

  6. Удаление выбранных элементов в TListBox

    // Напишите следующий код:
    for(int i = ListBox1->Items->Count-1; i >= 0; i--)
    if(ListBox1->Selected[i])
    ListBox1->Items->Delete(i);

Наверх