powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Не отключается кнопка на toolbar при отключении его action
10 сообщений из 10, страница 1 из 1
Не отключается кнопка на toolbar при отключении его action
    #39526434
caca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

подскажите что не так:
при создании в рунтайме акшена и кнопки c назначенным акшеном эта кнопка при отключении акшена не отключается, хотя если делать аналогию в дизайн тайме - то все нормально?

вот пример:

Код: pascal
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 Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, System.Actions, Vcl.ActnList,
  Vcl.StdCtrls, Vcl.ComCtrls, Vcl.ToolWin;

type
  TForm1 = class(TForm)
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    Button1: TButton;
    Button2: TButton;
    ActionList1: TActionList;
    Action1: TAction;
    procedure Action1Execute(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    action2: TAction;
    NewToolButton: TToolButton;
    procedure Action2Execute(Sender: TObject);
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Action1Execute(Sender: TObject);
begin
  ShowMessage('1');
end;

procedure TForm1.Action2Execute(Sender: TObject);
begin
  ShowMessage('2');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  action1.Enabled:=not(action1.Enabled);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  action2.Enabled:=not(action2.Enabled);
end;

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
  action2:=TAction.Create(Self);
  action2.ActionList:=ActionList1;
  action2.Caption:='Action2';
  action2.Name:='action2';
  action2.OnExecute:=action2Execute;
  action2.Enabled:=True;

  NewToolButton:=TToolButton.Create(Self);
  NewToolButton.Action:=action2;
  NewToolButton.Name:='ToolBotton2';
  NewToolButton.Parent:=ToolBar1;

  for i:=1 to pred(ToolBar1.ButtonCount) do ToolBar1.Buttons[i].Left:=ToolBar1.Buttons[i-1].Left;
end;

end.
...
Рейтинг: 0 / 0
Не отключается кнопка на toolbar при отключении его action
    #39526496
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте вместо этого
caca
Код: pascal
1.
 NewToolButton.Parent:=ToolBar1;

Написать так
Код: pascal
1.
THackToolButton(NewToolButton).SetToolbar(ToolBar1);
...
Рейтинг: 0 / 0
Не отключается кнопка на toolbar при отключении его action
    #39526506
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
caca
Код: pascal
1.
ToolBar1.Buttons[i].Left:=ToolBar1.Buttons[i-1].Left;



Это что за нафиг?

ТЫ все своий кнопки в одно место положил и теперь видишь только верхнюю.

Твоя-то кнопка может быть и запрещается, но видишь ты какую-нибудь другую.

Сделай им нармальный Align = alLeft и ALignWithMargins = True
...
Рейтинг: 0 / 0
Не отключается кнопка на toolbar при отключении его action
    #39526513
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он их не "в одно место положил".
Он проходит циклом.
Нулевая кнопка становится на первое место, при этом первая смещается на нулевое
Затем первая (а она была нулевой в предыдущем шаге) становится на второе место
И т.д.
То есть фактически он Нулевую кнопку поочерёдно перегоняет в конец списка
...
Рейтинг: 0 / 0
Не отключается кнопка на toolbar при отключении его action
    #39526530
caca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, все изза этой строчки
Код: pascal
1.
ToolBar1.Buttons[i].Left:=ToolBar1.Buttons[i-1].Left;


кнопка создается первой, была попытка подвинуть в конец, визуально кнопка вроде как переносится, но становится "кривой"

А может подскажете как кнопку корректно подвинуть?
...
Рейтинг: 0 / 0
Не отключается кнопка на toolbar при отключении его action
    #39526555
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochСделай им нoрмальный Align = alLeft и ALignWithMargins = True

...и не двигай руками.

Либу выкинь TToolBar/TCoolBar и возьми обычный TPanel вместо него
...
Рейтинг: 0 / 0
Не отключается кнопка на toolbar при отключении его action
    #39526566
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по http://www.delphigroups.info/2/04/314776.html изменение TToolButton.Left было полу0официальным способом изменять очередность (и тем самым положение) кнопок.

Можешь попробовать TToolPanel.Repaint или TToolPanel.Invalidate

Но это не очень надёжно
...
Рейтинг: 0 / 0
Не отключается кнопка на toolbar при отключении его action
    #39526579
caca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arioch,

спасибо, но не помогает...
...
Рейтинг: 0 / 0
Не отключается кнопка на toolbar при отключении его action
    #39526584
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тады ой.

TToolbar - это древний компонент, который устарел с выходом IE4, Office97 и Win98

Бери что-нибудь свежее
...
Рейтинг: 0 / 0
Не отключается кнопка на toolbar при отключении его action
    #39526586
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я лично у себя, когда избавлялся от TToolbar97 попробовал TCoolBar, но в итоге остановился тупо на TFlowPanel
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Не отключается кнопка на toolbar при отключении его action
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]