0 / 0 / 0
Регистрация: 24.05.2017
Сообщений: 3

Прозрачная панель ,скрыть кнопки

15.06.2017, 18:52. Показов 3499. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер друзья!
Последние два года находил ответы на все вопросы но тут тупик.
Подскажите пожалуйста как сделать панель невидимой или на одной картинке создать две активные зоны.
То есть при нажатие на верхнюю часть картинки произойдёт собитие 1 ,а при нажатие на нижнюю часть событие 2. Я пытался выполнить это через панели,но их видно,что не позволительно.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.06.2017, 18:52
Ответы с готовыми решениями:

Скрыть пуск, панель задач
странно, но ничего подобного на форуме по делфи не нашел. может плохо искалWnd := FindWindow('Shell_TrayWnd', nil); Wnd :=...

Как скрыть верхнюю панель Caption в форме?
Здравствуйте всем!!! Я работаю с Delphi 6, можете подсказать.... Как скрыть верхный панель Caption в форме? Заранее спасибо!!!

Как скрыть кнопки в OpenDialog?
Можно ли скрыть кнопки в OpenDialog,чтобы пользователь по ошибке не выбрал другую папку, путь в нужную папку указываю через InitialDir.

9
504 / 247 / 75
Регистрация: 31.10.2010
Сообщений: 747
15.06.2017, 19:35
Ivanshilkov, самое простое решение это: нажатие одно событие которое разбивается на два или более в зависимости от координат положения курсора. Т.е. в событии необходимо определять координату (одну или обе) и принимать решение что делать дальше по условию.
1
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
15.06.2017, 19:38
при нажатии на картинку анализируй координаты, в которых произошел клик

так понятнее?
1
 Аватар для Пытливый
3763 / 2271 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
15.06.2017, 19:44
Вообще очень рекомендую почитать Александр Чиртик Delphi. Трюки и эффекты
На мой взгляд, одна из самых ценных в плане полезности книг. Там же найдете ответ на ваш вопрос.
1
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
15.06.2017, 20:07
нет никаких "активных зон"
это просто кон-цеп-ци-я
если вы нажали кнопку мыши, вы получите событие OnMouseDown с координатами
отпустили - OnMouseUp также с координатами
если Y < половины высоты, то считайте себе что вы попали в одну зону, иначе - в другую
Более сложные проверки координат дадут вам не только больше зон, но и могут сделать их разного размера и формы )
1
16.06.2017, 04:45

Не по теме:

Цитата Сообщение от Пытливый Посмотреть сообщение
очень рекомендую почитать Александр Чиртик Delphi. Трюки и эффекты
+1. Прекрасная книга :)

0
0 / 0 / 0
Регистрация: 24.05.2017
Сообщений: 3
17.06.2017, 17:22  [ТС]
ОГРОМНОЕ СПАСИБО!!!


Добавлено через 10 минут
DenNik, А мажешь сделать пример кода,если тебе не трудно.
0
 Аватар для Пытливый
3763 / 2271 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
17.06.2017, 18:52
Лучший ответ Сообщение было отмечено Ivanshilkov как решение

Решение

Ну вот вам аж 4 зоны на имидже:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
unit Unit35;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
 
type
  TForm35 = class(TForm)
    Image1: TImage;
    Label1: TLabel;
    procedure FormPaint(Sender: TObject);
    procedure Image1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    AActiveArea: Array of record Area: TRect; Msg: String; end;
  public
    { Public declarations }
  end;
 
var
  Form35: TForm35;
 
implementation
 
{$R *.dfm}
 
procedure TForm35.FormCreate(Sender: TObject);
var
  i: Integer;
begin
 SetLength(AActiveArea, 4);
 AActiveArea[0].Area := Rect(0,0,60,30);
 AActiveArea[0].Msg := 'Hot zone1';
 AActiveArea[1].Area := Rect(Image1.Width-60,0,Image1.Width,30);
 AActiveArea[1].Msg := 'Hot zone2';
 AActiveArea[2].Area := Rect(0,Image1.Height-30,60,Image1.Height);
 AActiveArea[2].Msg := 'Hot zone3';
 AActiveArea[3].Area := Rect(Image1.Width-60,Image1.Height-30,Image1.Width,Image1.Height);
 AActiveArea[3].Msg := 'Hot zone4';
end;
 
procedure TForm35.FormPaint(Sender: TObject);
var
  i: Integer;
begin
 for i := 0 to Length(AActiveArea)-1
 do begin
    Image1.Canvas.Pen.Color := clBlack;
    Image1.Canvas.Rectangle(AActiveArea[i].Area.Left,AActiveArea[i].Area.Top,AActiveArea[i].Area.Right,AActiveArea[i].Area.Bottom);
    Image1.Canvas.TextOut(AActiveArea[i].Area.Left+4, AActiveArea[i].Area.Top+2, AActiveArea[i].Msg);
    end;
end;
 
procedure TForm35.Image1Click(Sender: TObject);
var
  i: Integer;
  P: TPoint;
begin
 P := Image1.ScreenToClient(Mouse.CursorPos);
 Label1.Caption := '';
 for i := 0 to Length(AActiveArea)-1
 do if PtInRect(AActiveArea[i].Area, P)
    then Label1.Caption := AActiveArea[i].Msg;
end;
 
end.
1
0 / 0 / 0
Регистрация: 24.05.2017
Сообщений: 3
17.06.2017, 20:57  [ТС]
Пытливый, Друг,а подскажи код для картинки 217*241. и при нажатие на зону 1 ,процедура 1,а на зону 2,процедура 2.
0
 Аватар для Пытливый
3763 / 2271 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
17.06.2017, 23:16
Можно и так, идея та-же:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
unit Unit35;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
 
type
  TForm35 = class(TForm)
    Image1: TImage;
    Label1: TLabel;
    procedure FormPaint(Sender: TObject);
    procedure Image1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    AActiveArea: Array of TRect;
    procedure DoProc1;
    procedure DoProc2;
  public
  end;
 
var
  Form35: TForm35;
 
implementation
 
{$R *.dfm}
 
procedure TForm35.DoProc1;
begin
 Label1.Caption := 'Hot1';
end;
 
procedure TForm35.DoProc2;
begin
 Label1.Caption := 'Hot2';
end;
 
procedure TForm35.FormCreate(Sender: TObject);
begin
 SetLength(AActiveArea, 2);
 AActiveArea[0] := Rect(0,0,60,30);
 AActiveArea[1] := Rect(Image1.Width-60,0,Image1.Width,30);
end;
 
procedure TForm35.FormPaint(Sender: TObject);
var
  i: Integer;
begin
 for i := 0 to Length(AActiveArea)-1
 do begin
    Image1.Canvas.Pen.Color := clBlack;
    Image1.Canvas.Rectangle(AActiveArea[i].Left,AActiveArea[i].Top,AActiveArea[i].Right,AActiveArea[i].Bottom);
    Image1.Canvas.TextOut(AActiveArea[i].Left+4, AActiveArea[i].Top+2, 'Hot' + IntToStr(i));
    end;
end;
 
procedure TForm35.Image1Click(Sender: TObject);
var
  i: Integer;
  P: TPoint;
begin
 P := Image1.ScreenToClient(Mouse.CursorPos);
 Label1.Caption := '';
 for i := 0 to Length(AActiveArea)-1
 do if PtInRect(AActiveArea[i], P)
    then case i of
         0: DoProc1;
         1: DoProc2;
         end;
end;
 
end.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.06.2017, 23:16
Помогаю со студенческими работами здесь

Кнопки на панель
Можно как нибудь добавить на панель кнопки которые уже лежат на форме(тоисть просто с формы ъх перекинуть на панель)?

Скрыть все кнопки, кроме некоторых
Здравствуйте! Самостоятельно изучаю делфи. Вот такой вопрос. Допустим, у меня на форме 100 кнопок (N0..N99). Мне нужно их скрыть, кроме...

Скрыть кнопки при определённом RadioButton
Нужна ваша помощь. Есть 2 RadioButton. При нажатии на RadioButton1 должны пропасть кнопки button6 и button8. При нажатии на...

Горячие клавиши: скрыть кнопки на форме
Как с помощью горячих клавиш сделать так, чтобы скрывались другие кнопки на форме?

Активация кнопки, верхняя панель окна
Учусь работать с делфи. Понемногу разбираюсь. Собрал небольшую программку.. Теперь вопрос: как сделать так, чтобы кнопка Close Или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru