IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Панель инструментов
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Привет!
Я хочу из всплывающего меню (на скрине) изменять размер шрифта в мемо.
procedure TForm1.PopupMenu1Change(Sender: TObject; Source: TMenuItem;
Rebuild: Boolean);
var
a:integer;
begin
a:=strtoint(Source.Caption);
memo1.Font.Size:=a;
end;
Выдает ошибку сразу при запуске. Как тут быть?


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
Выдает ошибку сразу при запуске.
Правильно делает. У тебя в момент создания меню (а OnChange вызывается именно в момент создания, или при переформировании меню, а не при щелчке на его элементе) Source = nil со всеми вытекающими последствиями. Лови TMenuItem.OnClick для каждого их пунктов меню и делай то, что тебе надо:

procedure TForm1.N101Click(Sender: TObject);
var
s: string;
p: integer;
begin
s := (Sender as TMenuItem).Caption;
p := pos('&', s);
if p > 0 then Delete(s, p, 1);

Memo1.Font.Size := StrToInt(s);
end;
, всем остальным пунктам назначь этот же обработчик...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


СПАСИБО!
А почему '&' символ в разных пунктах на разных позициях?
И еще, допустим есть 2 кнопки. При нажатии на кнопку1 происходят определенные действия. А при нажатии на кнопку2 сначала происходят какие-то действия, а потом тоже самое, что и при нажатии кнопки1. Как вызвать нажатие кнопки1 при щелчке на кнопку2?(можно конечно написать свою процедуру, но это не то)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
А почему '&' символ в разных пунктах на разных позициях?
А потому что если у тебя есть пункты "10" и "15", то в одном быстрый вызов будет назначен на 1, а во втором - на 5 (единица уже занята). Поэтому я и не стал привязываться к конкретной позиции символа "&", а сделал его поиск через Pos.

Цитата
(можно конечно написать свою процедуру, но это не то)
Зачем писать что-то, оно ж уже написано, надо только вызвать:
procedure TForm1.Button1Click(Sender: TObject);
begin
// что-то
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
// еще что-то
Button1Click(Sender);
end;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Понятно. А как программно можно добавить/удалить кнопку на панель?

Сообщение отредактировано: Client -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Точно так же, как и любой другой компонент:
new_button := TButton.Create(Application);
new_button.Parent := ...
new_button.OnClick := ...
// Ну, и что там тебе еще нужно...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


new_button := TButton.Create(Application);
Добавил описание
new_button:tbutton;
При нажатии кнопки создаю, но ничего нету...
Что не так?
procedure TForm1.Button1Click(Sender: TObject);
var
new_button:tbutton;
begin
new_button := TButton.Create(Application);
end;


Добавлено через 13 мин.
procedure TForm1.Button1Click(Sender: TObject);
var
new_button:tbutton;
begin
new_button := TButton.Create(Application);
new_button.Left:=100;
new_button.Top:=100;
new_button.Caption:='dfdsfds';
new_button.Parent:=Self;
end;
Получилось) А как добавить кнопку на панель инструментов? Это же не обычная кнопка? И что значит new_button.Parent:=Self?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата
А как добавить кнопку на панель инструментов?
Что такое для тебя "панель инструментов"? Какой-то определенный компонент? Ну, так делай его родителем кнопки...

Цитата
И что значит new_button.Parent:=Self?
Вот то самое и значит, форму считать родителем новой кнопки.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Цитата
Что такое для тебя "панель инструментов"? Какой-то определенный компонент? Ну, так делай его родителем кнопки...
t1 := TButton.Create(Application);
t1.Left:=100;
t1.Top:=100;
t1.Caption:='новая кнопка';
t1.Parent:=ToolBar1;
Сделал предком тулбар и все как надо good.gif
А как описать обработчик OnClick?
Parent:=Self
и
Parent:=Form1
работает одинаково. Self это же "сам"?

Сообщение отредактировано: Client -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Цитата(Client @ 20.05.2009 19:59) *
Parent:=Self
и
Parent:=Form1
работает одинаково. Self это же "сам"?
Угу... "Сам" - то это "сам", только кто "сам"? Вообще-то Self - аналог Form1.Self, то есть, относится к форме, если не указать обратное. Если надо что-то другое - надо явно указать...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


О_О буду знать, я думал что это "текущий объект"
СПАСИБО БОЛЬШОЕ VOLVO ЗА ПОМОЩЬ!

Сообщение отредактировано: Client -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


...
private
procedure NEWButtonsClick(Sender: TObject);
...
procedure NEWButtonsClick(Sender: TObject);
begin
showmessage('СООБЩЕНИЕ')
end;

procedure TForm1.Button1Click(Sender: TObject);

begin
t1 := TButton.Create(Application);
t1.Left:=100;
t1.Top:=100;
t1.Caption:='кнопка';
t1.Parent:=Form1;
t1.OnClick:=NEWButtonsClick();

end;
Как тут вызвать процедуру на нажатие созданной кнопки?

Сообщение отредактировано: Client -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Где "тут"? Как только ты нажмешь на кнопку, событие и сработает. Только скобки после NEWButtonsClick убери, а то будет ошибка компиляции.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;

procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure SomeButtonEvent(Sender: TObject );
public
{ Public declarations }
end;

var
Form1: TForm1;
t1:tbutton;

implementation

{$R *.dfm}

procedure TForm1.SomeButtonEvent( Sender:TObject );
begin
ShowMessage( 'Сообщениее');
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
t1:=TButton.Create(Application);
t1.Left:=100;
t1.Top:=100;;
t1.Parent := form1;
t1.OnClick := SomeButtonEvent;

end;

end.
Все работает(хотя только что ошибку давал)

Сообщение отредактировано: Client -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.04.2024 16:36
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name