| 
| 
 | Вопрос # 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. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |