Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Не отключается кнопка на toolbar при отключении его action / 10 сообщений из 10, страница 1 из 1
26.09.2017, 14:07:57
    #39526434
caca
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отключается кнопка на toolbar при отключении его action
Всем привет!

подскажите что не так:
при создании в рунтайме акшена и кнопки 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
26.09.2017, 14:57:35
    #39526496
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отключается кнопка на toolbar при отключении его action
Попробуйте вместо этого
caca
Код: pascal
1.
 NewToolButton.Parent:=ToolBar1;

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



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

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

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

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


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

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

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

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

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

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

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

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

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


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