Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Список строк-"ссылок" 
:(
    Опции темы
TP@MB@Y
Дата 2.7.2005, 02:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 18.12.2004
Где: Москва

Репутация: нет
Всего: 4



Вобщем, у меня есть список ников (пишу прогу наподобие чата) и хотелось бы сделать чтобы отображался не просто список(мемо или ричэдит), а чтобы можно было по нику щелкать (что то наподобие ссылки). Ну как обычно в сетевых чатах. Насколько хватает моих знаний - такого компонента вроде нету. У кого какие идеи? smile
PM   Вверх
Rrader
  Дата 2.7.2005, 04:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 70
Всего: 191



Делай итемы в TTreeView со свойством HotTrack и отслеживай нажатия. Будет тебе список. smile

Это сообщение отредактировал(а) Rrader - 2.7.2005, 04:30


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Coder
Дата 2.7.2005, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 13.12.2004

Репутация: 5
Всего: 11



При щелчке на списке узнавай ItemIndex. А потом по индексу обращайся к полям ник и т.д.
PM MAIL   Вверх
Quadr0
Дата 2.7.2005, 12:27 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Rrader @ 2.7.2005, 04:19)
Делай итемы в TTreeView

Вообще то TListView. Создаёшь колонки, куда будешь записывать ник, ip-адрес, режим, активность пользователя, делаешь все колонки кроме ника шириной 0, чтобы осталась только колонка с ником, ставшь AutoSize := True, HotTrack := True, ReadOnly := True. Доступ к колонкам осуществляется по SubItems. Примерно так реализован список во всех чатах.
  Вверх
TP@MB@Y
Дата 2.7.2005, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 18.12.2004
Где: Москва

Репутация: нет
Всего: 4



Ого smile Здорво!

Спасибо за подсказки!
PM   Вверх
TP@MB@Y
Дата 6.7.2005, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 18.12.2004
Где: Москва

Репутация: нет
Всего: 4



А вот вдогонку еще вопрос:
Как сделать для каждого итема хинт? Т.е. чтобы я навел допустим на ник и показался к примеру айпишник.
PM   Вверх
NoeR
Дата 7.7.2005, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 233
Регистрация: 6.2.2005

Репутация: нет
Всего: нет



Цитата
Вобщем, у меня есть список ников (пишу прогу наподобие чата) и хотелось бы сделать чтобы отображался не просто список(мемо или ричэдит), а чтобы можно было по нику щелкать (что то наподобие ссылки). Ну как обычно в сетевых чатах. Насколько хватает моих знаний - такого компонента вроде нету. У кого какие идеи? 

Я это делал через хтмл... туда и картинки засовывал и на второй твой вопрос отвечал =) Надо было токо зайти в раздел ВВВ этого форума и спросить какой месаг слать, вот и все, вполне удобно smile
--------------------
По факту пропажи мужа, возбуждено... Два соседа.Если у Вас проблемы с ребенком, спросите у жены, может, это не Ваши проблемы!>>> NoeR++ <<<
PM MAIL ICQ   Вверх
Quadr0
Дата 7.7.2005, 01:04 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











TP@MB@Y, просто меняй каждый раз хинт списка процедурой format. Ну скажем:
Код

procedure ReformatHint;
var
  ANode: TListItem;
  Name, Address, Info: string;
begin
  { Здесь ты присваиваешь переменным значения }
  ANode := ListView.GetNodeAt(Mouse.X, Mouse.Y);
  if ANode = nil then
    Exit;
  Name := ANode.Caption;
  Address := ANode.SubItems.Strings[0];
  Info := ANode.SubItems.Strings[1];
  { А здесь формируешь хинт }
  ListView.Hint := Format('Name: %n' + #13#10 + 'Ip address: %a' + #13#10 + 'Info: %i', [Name, Address, Info]);
end;

+ Прикручиваем проверку на Selected или Hot.

Это сообщение отредактировал(а) Quadr0 - 7.7.2005, 23:17
  Вверх
TP@MB@Y
Дата 7.7.2005, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 18.12.2004
Где: Москва

Репутация: нет
Всего: 4



Quadr0
Спасибо!

PS Там только надо этот код вставлять в try-except. Иначе если навести не на итем - будет еррор.
PM   Вверх
Quadr0
Дата 7.7.2005, 23:17 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











TP@MB@Y, само собой. Вместо try..except сделай проверку на nil у ANode smile
P.s. Я отредактировал код smile
  Вверх
TP@MB@Y
Дата 7.7.2005, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 18.12.2004
Где: Москва

Репутация: нет
Всего: 4



Quadr0
Столкнулся с еще одной проблемкой: допустим у меня есть два ListView. Мне надо все итемы первого скопировать во второй, т.е. ListView1.Items:=ListView2.Items. Но выдается ошибка Access violation at adress...
PM   Вверх
Quadr0
Дата 8.7.2005, 00:26 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Код

var
  i: integer;
  Item: TListItem;
begin
  for i := 0 to ListView1.Items.Count - 1 do
  begin
    Item := ListView2.Items.Add;
    Item.Assign(ListView1.Items.Item[i]);
  end;
end;

А вот так можно переместить из одного в другой:
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListView1.MoveSelection(ListView2);
end;


Это сообщение отредактировал(а) Quadr0 - 8.7.2005, 00:27
  Вверх
TP@MB@Y
Дата 8.7.2005, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 18.12.2004
Где: Москва

Репутация: нет
Всего: 4



Quadr0
Ясно.
Похоже у меня проблема с передачей итемов через сокеты. Создам отдельную тему чтоб не злить модераторов smile
PM   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0831 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.