![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| GRU |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 20.7.2004 Репутация: 1 Всего: 1 |
privet!
ListView.Style := vsRaport scroll'i vertikalnyie i horizontalnyie, koordinaty colum'na mieniajutsa kak Event'e DblClick uznat index column'a i v celle narisovat panel spasibo |
|||
|
||||
| GRU |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 20.7.2004 Репутация: 1 Всего: 1 |
Extended GetItemAt
This method (GetItemAt) only provides the information about which ListItem (if any) is located at the specified coordinates passed as parameters, but only works with the first column of the TListView. The rest are ignored. If we needed to know if the user clicked on an element in another column, we can declare a new method in a derived class: uses ComCtrls; type TListViewX = class(TListView) public function GetItemAtX(X, Y: integer; var Col: integer): TListItem; end; implementation function TListViewX.GetItemAtX(X, Y: integer; var Col: integer): TListItem; var i, n, RelativeX, ColStartX: Integer; ListItem: TlistItem; begin Result := GetItemAt(X, Y); if (Result = nil) then begin Col := 0; // First column end else if (ViewStyle = vsReport) and (TopItem <> nil) then begin // First, let's try to find the row ListItem := GetItemAt(TopItem.Position.X, Y); if (ListItem <> nil) then begin // Now let's try to find the Column RelativeX := X-ListItem.Position.X-BorderWidth; ColStartX := Columns[0].Width; n := Columns.Count - 1; for i := 1 to n do begin if (RelativeX < ColStartX) then break; if (RelativeX <= ColStartX + StringWidth(ListItem.SubItems[i-1])) then begin Result := ListItem; Col := i; break; end;//if Inc(ColStartX, Columns[i].Width); end;//for end;//if end;//if end; Casting to the new class We don't need to intall this new component and register it in the components palette as we explained in another article. Instead, any time we want to access this method, we can just cast the object (for example ListView1) to our new class. For example in a MouseDown event: procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var col: integer; li: TListItem; begin li := TListViewX(ListView1).GetItemAtX(x, y, col); if (li <> nil then) ShowMessage('Column #' + IntToStr(col)); end; nashol vot takoj variant. no on ploxo rabotaet: iesli padvynut horizontalnyi scroll ili cell listview'a pusta to nevazvrachaet indexa Это сообщение отредактировал(а) GRU - 24.8.2004, 18:47 |
|||
|
||||
| [3Df]Grey DeMonstr |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.8.2004 Где: Москва Репутация: 1 Всего: 1 |
A gde ty nashel svoistvo Style u TListView? Ili eto Delphi8 ???
|
|||
|
||||
| GRU |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 20.7.2004 Репутация: 1 Всего: 1 |
nu ashibka vyshla
ViewStyle := vsReport; |
|||
|
||||
| [3Df]Grey DeMonstr |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.8.2004 Где: Москва Репутация: 1 Всего: 1 |
Vse GORAZDO proshe, vot kusok koda:
Resultat - na Labele |
|||
|
||||
| GRU |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 20.7.2004 Репутация: 1 Всего: 1 |
takaja papravka malenkaja i kod rabotaet ochen xorosho. sposibo. vyruchel
Resultat - na StaticText1 ;) Это сообщение отредактировал(а) GRU - 26.8.2004, 00:13 |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |