Форум программистов, компьютерный форум CyberForum.ru

Lazarus

Войти
Регистрация
Восстановить пароль
 
Joey
Джоуи Скалолазер
399 / 313 / 87
Регистрация: 05.05.2015
Сообщений: 1,820
Записей в блоге: 2
#1

Как менять BorderStyle с пом. Combobox? - Lazarus

02.01.2017, 15:41. Просмотров 272. Ответов 6
Метки нет (Все метки)

Добавил в Combobox такие Items:
bsNone
bsSingle
bsSizeable
bsDialog
bsToolWindow
bsSizeToolWin

Теперь вопрос, как менять бордерстайл при выборе элементов комбобокса?
Delphi
1
2
3
4
Combobox1Change(Sender: TObject);
begin
  BorderStyle := 
end;
Добавлено через 1 секунду
Можно ли создать массив, к которому обращаться MyArray[ComboBox1.Itemindex]?

Добавлено через 1 секунду
Придумал один вариант (не самый лучший):
Delphi
1
2
3
4
var MyArr: Array[0..5] of TFormBorderStyle = (bsNone, bsSingle, bsSizeable, bsDialog, bsToolWindow, bsSizeToolWin);
begin
  BorderStyle := MyArr[ComboBox1.ItemIndex];
end;
Если кто знает лучше, просьба поделиться
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2017, 15:41     Как менять BorderStyle с пом. Combobox?
Посмотрите здесь:
Как сохранять и загружать типизированные файлы с пом. TStream-ов? Lazarus
Lazarus Как правильно менять размер текста в memo?
Как по нажатию мыши менять TImage и перерисовывать на него bmp с другого TImage? Lazarus
Lazarus Как программно развернуть ComboBox
Каждые 10 секунд менять цвет Lazarus
Менять местами массивы, переменные Lazarus
Lazarus Компоненты TButton, при нажатии менять шрифт
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
23234 / 15225 / 4423
Регистрация: 22.10.2011
Сообщений: 27,070
Записей в блоге: 4
02.01.2017, 15:52     Как менять BorderStyle с пом. Combobox? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Так лучше?
Pascal
1
2
3
4
5
6
7
uses ..., TypInfo;
 
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  BorderStyle := TFormBorderStyle(GetEnumValue(TypeInfo(TFormBorderStyle),
                                               (Sender as TComboBox).Text)); // конвертация содержимого строки в тип
end;
Добавлено через 2 минуты
Про
Pascal
1
2
3
4
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  BorderStyle := TFormBorderStyle((Sender as TComboBox).ItemIndex); // если уверен, что айтемы всегда будут расположены в правильном порядке
end;
я вообще не хотел упоминать
Puporev
Модератор
51741 / 39672 / 13099
Регистрация: 18.05.2008
Сообщений: 90,732
02.01.2017, 16:13     Как менять BorderStyle с пом. Combobox? #3
Интересно, а что меняется визуально? Сколько ни менял значения ничего не увидел. Кстати в инспекторе объектов у меня только 2 значения bsNone, bsSingle.
И тоже самое при
Pascal
1
ComboBox1.BorderStyle :=TFormBorderStyle(Combobox1.ItemIndex);
krapotkin
2473 / 2350 / 596
Регистрация: 14.04.2014
Сообщений: 11,291
Записей в блоге: 1
02.01.2017, 17:45     Как менять BorderStyle с пом. Combobox? #4
самый нормальный как раз вариант с массивом
а borderstyle насколько я помню, устанавливается при создании формы, поэтому мало выбрать значение, нужно еще и пересоздать ее с этим значением
но, как пишут сейчас в интернетах. "это не точно" )))
Joey
Джоуи Скалолазер
399 / 313 / 87
Регистрация: 05.05.2015
Сообщений: 1,820
Записей в блоге: 2
03.01.2017, 02:08  [ТС]     Как менять BorderStyle с пом. Combobox? #5
Цитата Сообщение от Puporev Посмотреть сообщение
ComboBox1.BorderStyle
Вы меняете BorderStyle ComboBox-а, а не формы. Речь идет о форме:
Delphi
1
BorderStyle := ...
Добавлено через 54 секунды
krapotkin, да нет, все работает прямо в рантайме, менял раз двадцать (я про BorderStyle := MyArr[ComboBox1.ItemIndex]

volvo, спасибо, не знал про такой синтаксис

Добавлено через 7 минут
volvo, почему-то при любом синтаксисе выкидывает ошибку, даже находясь в try except, причем днем такого не было. Вот код:
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
unit Unit3; 
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, typinfo;
type
 { TForm3 }
  TForm3 = class(TForm)
    Button1: TButton;
    ComboBox1: TComboBox;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
  private  
  { private declarations }
  public    
 { public declarations }
  end;
 
var 
 Form3: TForm3;
 
implementation
 
 {$R *.lfm}
 
 { TForm3 }
 
procedure TForm3.ComboBox1Change(Sender: TObject);
begin
  try
    //BorderStyle := TFormBorderStyle(ComboBox1.ItemIndex);
    BorderStyle := TFormBorderStyle(GetEnumValue(TypeInfo(TFormBorderStyle),
      ComboBox1.Text)); // volvo
  except
    ShowMessage('error');
  end;
end;
 
procedure TForm3.Button1Click(Sender: TObject);
begin
  Memo1.Font.Name := 'Courier New';
  with Memo1.Lines do
    begin
      Add('       ' + ComboBox1.Items[ComboBox1.ItemIndex] + '      ');
      Add('ScreenToClient(Point(Left, Top)).x = '
        + IntToStr(ScreenToClient(Point(Left, Top)).x));
      Add('ScreenToClient(Point(Left, Top)).y = '
        + IntToStr(ScreenToClient(Point(Left, Top)).y));
    end;
end;
 
end.
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
23234 / 15225 / 4423
Регистрация: 22.10.2011
Сообщений: 27,070
Записей в блоге: 4
03.01.2017, 10:51     Как менять BorderStyle с пом. Combobox? #6
Цитата Сообщение от Joey Посмотреть сообщение
причем днем такого не было
Чудес не бывает. Значит, что-то изменилось, и либо та строка, которая записана в Text комбобокса уже не является одной из вышеперечисленных и не может быть корректно преобразована в TFormBorderStyle, либо ItemIndex не находится в допустимых границах. Проверяй, что изменилось...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2017, 20:11     Как менять BorderStyle с пом. Combobox?
Еще ссылки по теме:
C# Как запретить нескольким comboBox-ам менять одновременно данные?
С пом. директивы absolute, отсортировать по убыванию с пом. одной подпрограммы векторы из 10 и 14 вещественных компонент Turbo Pascal
Подключение ЖД с пом. SATA, а DVD - привод с пом. IDE
Как изменить BorderStyle в Picturebox? Visual Basic .NET .NET 4.x
Как перемещать форму BorderStyle=None C#

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

Или воспользуйтесь поиском по форуму:
Joey
Джоуи Скалолазер
399 / 313 / 87
Регистрация: 05.05.2015
Сообщений: 1,820
Записей в блоге: 2
03.01.2017, 20:11  [ТС]     Как менять BorderStyle с пом. Combobox? #7
volvo, не знаю, почему, не смог воссоздать проблему (запустил тот же сохраненный проект)

Добавлено через 18 секунд
anyway, спасибо за помощь, ребята
Yandex
Объявления
03.01.2017, 20:11     Как менять BorderStyle с пом. Combobox?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru