Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2011, 09:01   #1
Молоток
Пользователь
 
Регистрация: 28.08.2010
Сообщений: 37
Вопрос Создать на Tabsheet-е кнопку закрыть

Уважаемые специалисты. Вам представляю такую ситуацию:
Динамически создаю Tabsheet-ы (вкладка). На каждую вкладку вставляется рисунок из Imeg-а (рисунок - красный квадрат с белым крестиком)
Цитата:
procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl;
TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
AText: string;
APoint: TPoint;
i: integer;
begin

with (Control as TPageControl).Canvas do
begin
AText:= TPageControl(Control).Pages[TabIndex].Caption;
APoint.x := 9+(Rect.Left - Rect.Right) div 2 + TextWidth(AText) div 2;
APoint.y := (Rect.Bottom - Rect.Top) div 2 - TextHeight(AText) div 2;
i:= TPageControl(Control).Pages[TabIndex].ImageIndex;
if TabIndex = (Control as TPageControl).TabIndex
then
begin
Font.Color:= clBlue; Font.Style:= [fsBold];
end
else
begin
Font.Color:= clWindowText; Font.Style:= [];
end;

TextRect(Rect, Rect.Left + APoint.x, Rect.Top + APoint.y, AText);
ImageList1.Draw(TPageControl(Contro l).Canvas, Rect.Right + APoint.x - 17, Rect.Top + APoint.y, i);
end;

end;
Вопрос: Каким образом осуществить нажатие этого рисунка, чтоб закрывалась вкладка? Уверен, что есть среди Вас кто этим сталкивался.
Закон программиста: Если тебе что-то не нравится, то не спеши это исправлять, если не помнишь, для чего это сделали.
Молоток вне форума Ответить с цитированием
Старый 14.04.2011, 11:09   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

При клике по закладке определяй где указатель мыши и, если он в той области где картинка - удаляй закладку

UPD
Гораздо проще на Tabsheet создавать Button для удаления закладки. В Button.OnClick сделать активным другой Tabsheet и передать форме сообщение, в обработчике которого и удалить Tabsheet
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 14.04.2011 в 12:19.
Аватар вне форума Ответить с цитированием
Старый 14.04.2011, 15:22   #3
Молоток
Пользователь
 
Регистрация: 28.08.2010
Сообщений: 37
По умолчанию

Аватар, Ваш первый совет мне больше понравился, но не знаю каким образом определить местонахождения мышки. Если Вас незатруднит, напишите код нахождения курсора использую мною отправленный код, буду признателен.
Закон программиста: Если тебе что-то не нравится, то не спеши это исправлять, если не помнишь, для чего это сделали.

Последний раз редактировалось Молоток; 14.04.2011 в 15:27. Причина: Закон программиста: Если тебе что-то не нравится, то не спеши это исправлять, если не помнишь, для чего это сделали.
Молоток вне форума Ответить с цитированием
Старый 16.04.2011, 09:09   #4
Молоток
Пользователь
 
Регистрация: 28.08.2010
Сообщений: 37
По умолчанию

Люди, откликнитесь! Срочно нужно выполнить эту функцию
Закон программиста: Если тебе что-то не нравится, то не спеши это исправлять, если не помнишь, для чего это сделали.
Молоток вне форума Ответить с цитированием
Старый 16.04.2011, 12:09   #5
eduard93
Форумчанин
 
Регистрация: 06.12.2010
Сообщений: 300
По умолчанию

ScreenToClient и перехват WM_LBUTTONUP не работает?
eduard93 вне форума Ответить с цитированием
Старый 18.04.2011, 08:58   #6
Молоток
Пользователь
 
Регистрация: 28.08.2010
Сообщений: 37
По умолчанию

никогда не работал с такими функциями, если не трудно, напишите пример.
Закон программиста: Если тебе что-то не нравится, то не спеши это исправлять, если не помнишь, для чего это сделали.
Молоток вне форума Ответить с цитированием
Старый 18.04.2011, 11:21   #7
eduard93
Форумчанин
 
Регистрация: 06.12.2010
Сообщений: 300
По умолчанию

Когда встает задача изменения поведения стандартных контролов, без WinAPI не обойтись. http://www.delphikingdom.com/asp/vie...talogid=169#06
eduard93 вне форума Ответить с цитированием
Старый 18.04.2011, 12:38   #8
Молоток
Пользователь
 
Регистрация: 28.08.2010
Сообщений: 37
По умолчанию

чесно, там ничего не понял.
Закон программиста: Если тебе что-то не нравится, то не спеши это исправлять, если не помнишь, для чего это сделали.
Молоток вне форума Ответить с цитированием
Старый 18.04.2011, 14:21   #9
eduard93
Форумчанин
 
Регистрация: 06.12.2010
Сообщений: 300
По умолчанию

В таком случае вам разве что в разделе Фриланс смогут помочь.
eduard93 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Убрать кнопку закрыть и иконку Miller-1981 Win Api 2 16.11.2010 21:49
Создать кнопку Николай999 HTML и CSS 8 18.07.2010 23:23
Создать кнопку bablzz Microsoft Office Excel 6 06.05.2010 10:27
Создать динамически TabSheet с Form2 на Form1 Shouldercannon Общие вопросы Delphi 1 12.11.2009 10:22
Как закрыть MDIChild форму по нажатию на кнопку AndreyF Общие вопросы Delphi 4 11.07.2009 16:26