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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TabControl - переименование закладки, Нужны советы или ссылки 
:(
    Опции темы
aktuba
  Дата 6.1.2007, 06:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

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



Ситуация такая: мне необходимо в программе реализовать следующий момент. Пользователь дважды щелкает на закладке в TabControl (DblClick), после этого, на месте закладки появляется TEdit, в котором находится текст закладки. Пользователь редактирует текст, нажимает Enter или просто покидает TEdit (например, щелкает на другой компонент) и текст в закладке меняется на новый, из TEdit.

Теперь вопросы:

1. Как отловить DblClick на закладке?
2. Как определить границы (TRect) закладки?

Я использую стандартный TabControl, но, если кто-то знает другой компонент с такими свойствами - буду рад.
Заранее благодарен.


M
Girder
Одна тема - один вопрос!



--------------------
user posted image
PM MAIL WWW Skype   Вверх
Sunvas
Дата 6.1.2007, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

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



хз. Я для начала я бы использовал PageControl. А вообще кажися в JVCL уже был компонент для реализации такиф "финтов"


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
aktuba
Дата 6.1.2007, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

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



Page Control не подходит. Программа уже есть и мне необходимо просто улучшать ее. А замена TabControl на PageControl - больщой объем работы... smile 


--------------------
user posted image
PM MAIL WWW Skype   Вверх
MetalFan
Дата 6.1.2007, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



зачем лишние понты? сделай попап меню с пунктом "переименовать")


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
aktuba
  Дата 6.1.2007, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

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



Не "понты", а требования заказчика =((( Вот хочется ему, чтобы прямо на вкладке переименовывать можно было...

Добавлено @ 14:03 
Хорошо, границы табов можно запоминать во время отрисовки. Это не проблема.
Но, неужели никто не может подсказать, как отловить DblClick? smile 


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Sunvas
Дата 6.1.2007, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

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



Цитата(aktuba @  6.1.2007,  13:54 Найти цитируемый пост)
Не "понты", а требования заказчика =((( Вот хочется ему, чтобы прямо на вкладке переименовывать можно было...

На стандартной TabControl не думаю что это получиться... Поэтому
Цитата(aktuba @  6.1.2007,  12:55 Найти цитируемый пост)
 А замена TabControl на PageControl - больщой объем работы...

Видимо будет.. smile 


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
ivan219
Дата 6.1.2007, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

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



Цитата(aktuba @  6.1.2007,  13:54 Найти цитируемый пост)
Но, неужели никто не может подсказать, как отловить DblClick?

Новерное тут надо решать с помощью сообщений Windows и смотреть геде в это время находится курсор.
PM MAIL ICQ   Вверх
MetalFan
Дата 6.1.2007, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



Цитата(aktuba @  6.1.2007,  13:54 Найти цитируемый пост)
как отловить DblClick?


да запросто!!
можно через лок.хуки
а можно и тупо WndProc переопределив
вот простейший вариант:
Код

TForm1 = class (TForm )
...
  FOldTCWndProc: TWndMethod;
  Procedure NewTabCtrlWndProc( var AMessage: TMessage );
  procedure FormCreate( Sender: TObject );
...
procedure TForm1.FormCreate(Sender: TObject);
begin
  FOldTCWndProc := tbc1.WindowProc;
  tbc1.WindowProc := NewTabCtrlWndProc;
end;

procedure TForm1.NewTabCtrlWndProc(var AMessage: TMessage);
begin
  if AMessage.Msg = WM_LBUTTONDBLCLK then
  begin
    ShowMessage('DblClick!');
  end;
  FOldWP( AMessage );
end;



--------------------
There are always someone smarter than you...
PM MAIL   Вверх
aktuba
Дата 6.1.2007, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

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



Metalfan: В обоих случаях надо определить, что DblClick был именно по закладке и определить по какой закладке. Это как решить?


--------------------
user posted image
PM MAIL WWW Skype   Вверх
MetalFan
Дата 6.1.2007, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



  if AMessage.Msg = WM_LBUTTONDBLCLK then
  begin
    ShowMessage(tbc1.Tabs[tbc1.TabIndex]);
  end;

ты попробуй! эт возникнет только при даблклике на закладке




--------------------
There are always someone smarter than you...
PM MAIL   Вверх
December
Дата 6.1.2007, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


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

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



Как-то всё мегасложно получается. Давайте проще.
1) Ловим клик, запоминаем GetTickCount
2) Ловим ещё клик, проверяем GetTickCount-OldTickCount<Treshold
3) если да, то считаем DoubleClick пойманным
Disclaimer: у меня это работало на PageControl, с TabControl не тестировал.



--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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