|
Вопрос # 2 505/ вопрос открыт / |
|
Здравствуйте уважаемые эксперты!
Подскажите пожалуйста, как описывается групповая обработка компонентов, а именно кнопок (TButton):
на форме (TForm1.) размещены 3-и кнопки (Button1 , Button2 , Button3).
Надо, что-бы при наведении курсора мыши к определённой кнопки, - эта кнопка увеличивалась в 2 раза, иначе возврат её исходного состояния.
За ранее благодарю.
Приложение: Переключить в обычный режим- procedure TForm1.ButtonsMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
- var
- a,b,c: Integer;
- begin
-
- a:=TButton(Components[b]).Width(self);
- c:=TButton(Components[b]).Height(self);
-
- if Components[b] is TButton then
- with Components[b] as TButton do
- TButton(Components[b]).Width:= TButton(Components[b]).Width*2
- TButton(Components[b]).Height:=TButton(Components[b]).Height*2;
- else
- TButton(Components[b]).Width:=a;
- TButton(Components[b]).Height:=c;
- end;
 |
Вопрос задал: gyhy (статус: Посетитель)
Вопрос отправлен: 11 марта 2009, 18:31
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Ученый
Здравствуйте, demmetriy! Немного не то событие для кноппок выбрали.... я приведу код для одной кнопки....думаю дальше сами дороботаете:
procedure TForm1.Button1MouseEnter(Sender: TObject);
begin
button1.Height:=button1.Height*2;
button1.Width:=button1.Width*2
end;
procedure TForm1.Button1MouseLeave(Sender: TObject);
begin
button1.Height:=Round(button1.Height/2);
button1.Width:=Round(button1.Width/2)
end;
Надеюсь, что мой ответ моможет вам :))
 |
Ответ отправил: Ученый (статус: 8-ой класс)
Время отправки: 11 марта 2009, 20:31
Оценка за ответ: -1
|
Ответ #2. Отвечает эксперт: min@y™
Ну, не знаю, у меня тут в delphi 7 нету у TButton событий OnMouseEnter и OnMouseLeave. Поэтому, можно самому написать потомок TButton на эту тему.
Пристёгиваю к ответу то, что тебе, имхо, и нужно. Ну, по крайней мере, я так это понял. К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 11 марта 2009, 21:15
Оценка за ответ: 1
|
Мини-форум вопроса
Всего сообщений: 8; последнее сообщение — 14 марта 2009, 09:23; участников в обсуждении: 3.
|
min@y™ (статус: Доктор наук), 11 марта 2009, 20:33 [#1]:
a:=TButton(Components[b]).Width(self); // <--- Чему равно "b"?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 11 марта 2009, 20:35 [#2]:
А ".Width(self)" — это что за бред такой?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
gyhy (статус: Посетитель), 12 марта 2009, 17:32 [#3]:
В моем коде события OnMouseMove кнопок (Button1, ...2, ...3) имеют одинаковые значения, следовательно :
a:=TButton(Components[b]).Width(self);
TButton(Components[b]) - определённый компонент (Button) класса TButton.
Width(self) - начальная позиция (х,у).
Данный код процедуры ButtonsMove в последующем встраивается мной в событие OnMouseMove кнопок (Button1, ...2, ...3). Это чтобы не заполнять редактор кода однотипной информацией одинаковых методов с компонентами одного класса, так как в этом примере лишь 3-и кнопки с одинаковыми графическими свойствами.
|
|
Вадим К (статус: Академик), 12 марта 2009, 17:41 [#4]:
А Ваш код точно компилируется? я не уверен по поводу строки
a:=TButton(Components[b]).Width(self);
Также смотрим в вторую половину кода
if Components[b] is TButton then
with Components[b] as TButton do
TButton(Components[b]).Width:= TButton(Components[b]).Width*2
TButton(Components[b]).Height:=TButton(Components[b]).Height*2;
else
TButton(Components[b]).Width:=a;
TButton(Components[b]).Height:=c;
end;
в данном коде b неопределенно. То есть может быть каким угодно.
строка with Components[b] as TButton do вообще не нужна.
дальше, а где begin/end для then и для else?
Но даже если их поставить, то в ветке else Components[b] не будет кнопкой и соответсвенно дальнейшее присваивание бессмысленно.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
min@y™ (статус: Доктор наук), 12 марта 2009, 22:01 [#5]:
Ты смотрел тот пример, который я прицепил к своему ответу или нет?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
gyhy (статус: Посетитель), 12 марта 2009, 22:51 [#6]:
Да, смотрел: именно то что мне и надо,
но помимо кнопок у меня ещё несколько типов компонентов с одинаковым классом и одинаковыми методами.
И только этот код может быть решением данных проблем
|
|
Вадим К (статус: Академик), 13 марта 2009, 08:46 [#7]:
Ваш код не может быть решением - он синтаксически не верный. Он даже не скомпилируется.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
min@y™ (статус: Доктор наук), 14 марта 2009, 09:23 [#8]:
Да, смотрел: именно то что мне и надо,
Тогда за что оценка 1?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|