Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382

как покороче запретить BitBtn кнопки в некотором диапазоне?

22.03.2021, 21:37. Показов 1935. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Delphi
1
BitBtn[18..65].Enabled:=False;
или как то так;

Delphi
1
2
3
4
Fpr x:=18 to 65 do
begin
BitBtn[x].Enabled:=False;
end;
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.03.2021, 21:37
Ответы с готовыми решениями:

Визуализатор графиков по заданной функции на некотором диапазоне
Добрый день, используя winApi нужно сделать такое задание. Получилось сделать отдельные функции типа sin, cos. Но чтобы задавать функцию и...

Найти количество отрицательных элементов массива, значения которых лежат в некотором диапазоне
Найти количество отрицательных элементов массива, значения которых лежат в некотором(как я понял тоже отрицательном, что есть логично)...

BitBtn - изменение состояния кнопки при нажатии
подскажите. как сделать, что б при нажатии BitBtn кнопка меняла вид на нажатую, при повторном нажатии кнопка возвращалась в своё...

23
Злостный нарушитель
 Аватар для Verevkin
10359 / 5779 / 1275
Регистрация: 12.03.2015
Сообщений: 26,705
22.03.2021, 21:42
Delphi
1
2
3
4
Fpr x:=18 to 65 do
begin
  BitBtn[x].Enabled:=False;
end;
Так можно, да.
Delphi
1
var BitBtn: TObjectList<TBitBtn>;
0
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
22.03.2021, 21:52  [ТС]
просто так ошибка если объевляю :

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
var
  Form2: TForm2;
x2,y2,z2: Integer;
m2m2: array[1..2001] of String;
btb: array[1..66] of String;
t2mp1,t2mp2: TStringList;
m2,mm2,mmm2,mmmm2 : String;
bt2,bt3,bt4,bt5 : String;
BitBtn: TObjectList<TBitBtn>;
 
implementation
 
{$R *.dfm}
0
Злостный нарушитель
 Аватар для Verevkin
10359 / 5779 / 1275
Регистрация: 12.03.2015
Сообщений: 26,705
22.03.2021, 23:06
Цитата Сообщение от rolandas Посмотреть сообщение
просто так ошибка если объевляю
А чо за ошибка - сам догадайся, телепат грёбаный.
0
 Аватар для Alex Prozac
104 / 89 / 9
Регистрация: 25.11.2020
Сообщений: 261
22.03.2021, 23:09
Я, помнится, через перебор компонентов делал:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
var
i:word;
Component:TComponent;
 
begin
for i:=0 to MainForm.ComponentsCount-1 do  //перебираем все компоненты, что есть на форме
  begin
  Component:=MainForm.Components[i];  //Считываем параметры очередного компонента
  if Component is TBitBtn then  //Проверяем, что это - именно BitBtn
  (Component as TBitBtn).Enabled:=false;  //Если очередной компонент - это BitBtn, то изменяем его свойство
  end;
end;
А еще есть FindComponent. А если нужен некий диапазон - можно каждой кнопочке тэг присвоить (при инициализации проги, в цикле), и потом проверять его...
0
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
22.03.2021, 23:10  [ТС]
тебя Verevkin кто-то в детстве как-то особо обидели, что такой нервный?
да ладно, жизнь прекрасна, спасибо и за то
0
Злостный нарушитель
 Аватар для Verevkin
10359 / 5779 / 1275
Регистрация: 12.03.2015
Сообщений: 26,705
22.03.2021, 23:15
Цитата Сообщение от rolandas Посмотреть сообщение
Тебя Verevkin кто-то в детстве как-то особо обидели, что такой нервный?
Я просто помочь хотел.
Теперь перехотел.
0
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
22.03.2021, 23:21  [ТС]
Обижушка
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
23.03.2021, 00:07
Цитата Сообщение от rolandas Посмотреть сообщение
BitBtn: TObjectList<TBitBtn>
Если так объявляете, то надо подключать модуль Generics.Collections, но только вы таким образом получите только пустой список объектов типа TBitBtn, эти объекты еще надо будет туда добавить.
1
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
23.03.2021, 02:07  [ТС]
System.Generics.Collections подключил, а
добавление объектов..
кажись это здеся пример из этой оперы..

Delphi
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
type
  { Declare a new object type. }
  TNewObject = class
  private
    FName: String;
 
  public
    constructor Create(const AName: String);
    destructor Destroy(); override;
  end;
 
{ TNewObject }
 
constructor TNewObject.Create(const AName: String);
begin
  FName := AName;
end;
 
destructor TNewObject.Destroy;
begin
  { Show a message whenever an object is destroyed. }
  writeln('Object "' + FName + '" was destroyed!');
  inherited;
end;
 
var
  List: TObjectList<TNewObject>;
  Obj: TNewObject;
begin
  { Create a new List. }
  { The OwnsObjects property is set by default to true -- the list will free the owned objects automatically. }
  List := TObjectList<TNewObject>.Create();
 
  { Add some items to the List. }
  List.Add(TNewObject.Create('One'));
  List.Add(TNewObject.Create('Two'));
 
  { Add a new item, but keep the reference. }
  Obj := TNewObject.Create('Three');
  List.Add(Obj);
 
  {
    Remove an instance of the TNewObject class. The destructor
    is called for the owned objects, because you have set the OwnsObjects
    to true.
  }
  List.Delete(0);
  List.Extract(Obj);
 
  { Destroy the List completely -- more message boxes will be shown. }
  List.Free;
  readln;
end.
0
Злостный нарушитель
 Аватар для Verevkin
10359 / 5779 / 1275
Регистрация: 12.03.2015
Сообщений: 26,705
23.03.2021, 02:34
Цитата Сообщение от Пытливый Посмотреть сообщение
Если так объявляете, то надо подключать модуль Generics.Collections, но только вы таким образом получите только пустой список объектов типа TBitBtn, эти объекты еще надо будет туда добавить.
0
Модератор
 Аватар для D1973
9926 / 6463 / 2457
Регистрация: 21.01.2014
Сообщений: 27,418
Записей в блоге: 3
23.03.2021, 06:52
Лучший ответ Сообщение было отмечено rolandas как решение

Решение

Кусочек говнокода:
Delphi
1
2
for i := 18 to 65 do
  (FindComponent('BitBtn' + IntToStr(i)) as TBitBtn).Enabled := false;
2
 Аватар для Alex Prozac
104 / 89 / 9
Регистрация: 25.11.2020
Сообщений: 261
23.03.2021, 08:20
D1973, точно, как у меня в одной проге! Дело Фленова живет и побеждает))
0
Модератор
4146 / 2357 / 812
Регистрация: 15.11.2015
Сообщений: 9,436
23.03.2021, 09:20
Думаю, размещение нужных компонентов в отдельный массив уменьшит говнокодистость говнокода, да и работать с ними будет удобнее.
0
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
23.03.2021, 12:18  [ТС]
вот и все, конкретное и рабочее решение без всяких колекций генерик геморик..
спасибо. вот как просто это делается оказывается:

Delphi
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
unit Unit2;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons;
 
type
  TForm2 = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    BitBtn6: TBitBtn;
    BitBtn7: TBitBtn;
    BitBtn8: TBitBtn;
    BitBtn9: TBitBtn;
    BitBtn10: TBitBtn;
    BitBtn11: TBitBtn;
    BitBtn12: TBitBtn;
    BitBtn13: TBitBtn;
    BitBtn14: TBitBtn;
    BitBtn15: TBitBtn;
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form2: TForm2;
  i: ShortInt;
implementation
 
{$R *.dfm}
 
procedure TForm2.BitBtn1Click(Sender: TObject);
begin
// enable all
for i := 5 to 15 do
  (FindComponent('BitBtn' + IntToStr(i)) as TBitBtn).Enabled := True;
end;
 
procedure TForm2.BitBtn2Click(Sender: TObject);
begin
// DISABLE ALL
for i := 5 to 15 do
  (FindComponent('BitBtn' + IntToStr(i)) as TBitBtn).Enabled := False;
end;
 
procedure TForm2.BitBtn3Click(Sender: TObject);
begin
// enable 4..8 and 10
BitBtn14.Enabled:=True;
for i := 8 to 12 do
  (FindComponent('BitBtn' + IntToStr(i)) as TBitBtn).Enabled := True;
end;
 
procedure TForm2.BitBtn4Click(Sender: TObject);
begin
// disable 3..6
for i := 7 to 10 do
  (FindComponent('BitBtn' + IntToStr(i)) as TBitBtn).Enabled := False;
end;
 
end.
Миниатюры
как покороче запретить BitBtn кнопки в некотором диапазоне?  
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
23.03.2021, 12:44
Цитата Сообщение от rolandas Посмотреть сообщение
вот как просто это делается оказывается:
Это называется "через жопу". Ты четыре раза использовал FindComponent, вместо того, чтобы один раз использовать FindComponent - при старте приложения найти все кнопки, задвинуть их в массив TArray<TBitBtn>, а затем просто обращаться к списку по индексу (без необходимости каждый раз кастовать as TBitBtn) Вот это - просто.
0
Модератор
 Аватар для D1973
9926 / 6463 / 2457
Регистрация: 21.01.2014
Сообщений: 27,418
Записей в блоге: 3
23.03.2021, 12:48
Я больше скажу... Вся эта камарилья пойдет под откос при использовании нестандартных имен компонентов...
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
23.03.2021, 12:49
Цитата Сообщение от DenNik Посмотреть сообщение
четыре раза использовал FindComponent
что это я?
27, с@ка, вызовов FindComponent!
0
Модератор
4146 / 2357 / 812
Регистрация: 15.11.2015
Сообщений: 9,436
23.03.2021, 13:52
Цитата Сообщение от rolandas Посмотреть сообщение
решение без всяких колекций генерик геморик..
Вот такое с массивом:
Delphi
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons;
 
type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    BitBtn6: TBitBtn;
    BitBtn7: TBitBtn;
    BitBtn8: TBitBtn;
    BitBtn9: TBitBtn;
    BitBtn10: TBitBtn;
    BitBtn11: TBitBtn;
    BitBtn12: TBitBtn;
    BitBtn13: TBitBtn;
    BitBtn14: TBitBtn;
    BitBtn15: TBitBtn;
    btnDiasableAll: TButton;
    btnEnableAll: TButton;
    btnEnable48: TButton;
    btnDisable36: TButton;
    procedure FormCreate(Sender: TObject);
    procedure btnDiasableAllClick(Sender: TObject);
    procedure btnEnableAllClick(Sender: TObject);
    procedure btnEnable48Click(Sender: TObject);
    procedure btnDisable36Click(Sender: TObject);
  private
    { Private declarations }
    BtnList: array[0..14] of TBitBtn;
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  BtnList[0] := BitBtn1;
  BtnList[1] := BitBtn2;
  BtnList[2] := BitBtn3;
  BtnList[3] := BitBtn4;
  BtnList[4] := BitBtn5;
  BtnList[5] := BitBtn6;
  BtnList[6] := BitBtn7;
  BtnList[7] := BitBtn8;
  BtnList[8] := BitBtn9;
  BtnList[9] := BitBtn10;
  BtnList[10] := BitBtn11;
  BtnList[11] := BitBtn12;
  BtnList[12] := BitBtn13;
  BtnList[13] := BitBtn14;
  BtnList[14] := BitBtn15;
end;
 
procedure TForm1.btnDiasableAllClick(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to 14 do
    BtnList[i].Enabled := false;
end;
 
procedure TForm1.btnEnableAllClick(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to 14 do
    BtnList[i].Enabled := true;
end;
 
procedure TForm1.btnEnable48Click(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to 14 do
    if i in[4..8, 10] then
      BtnList[i].Enabled := true;
end;
 
procedure TForm1.btnDisable36Click(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to 14 do
    if i in[3..6] then
      BtnList[i].Enabled := false;
end;
 
end.
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
23.03.2021, 14:16
Перевёл я тут заголовок программы ТС.. Страшную вещь пишет товарищ
Миниатюры
как покороче запретить BitBtn кнопки в некотором диапазоне?  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.03.2021, 14:16
Помогаю со студенческими работами здесь

Не изменяется программно свойство Kind кнопки BitBtn
Добрый вечер! В инспекторе объектов задано свойство Kind у bitbtn как &quot;bkNo&quot; В ходе программынеобходимо поменять на &quot;bkYes&quot;, но...

Нажатие на BitBtn - циклически менять у кнопки Glyph
как реализовать? код не рабочий unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes,...

Изменить форму кнопки Button или BitBtn
Когда я ставлю кнопки на форму то ани у виде прямоугольныка. А кака можна изменить форму кнопки.

Как можно написать покороче
m = x*n+1 a1 = a = return a1 вои екземпляр (50, 5), ) (100, 5), )

Как можно покороче записать это
if(!name){ $(&quot;#name&quot;).addClass(&quot;error_js&quot;); }else{ $(&quot;#name&quot;).removeClass(&quot;error_js&quot;); } ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru