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

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

Восстановить пароль Регистрация
 
Joey
Джоуи Скалолазер
 Аватар для Joey
242 / 156 / 36
Регистрация: 05.05.2015
Сообщений: 1,123
Записей в блоге: 1
02.01.2017, 15:41     Как менять BorderStyle с пом. Combobox? #1
Добавил в 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)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
volvo
Супер-модератор
 Аватар для volvo
22080 / 14385 / 4044
Регистрация: 22.10.2011
Сообщений: 25,452
Записей в блоге: 2
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
Модератор
 Аватар для Puporev
50734 / 38665 / 12483
Регистрация: 18.05.2008
Сообщений: 87,769
02.01.2017, 16:13     Как менять BorderStyle с пом. Combobox? #3
Интересно, а что меняется визуально? Сколько ни менял значения ничего не увидел. Кстати в инспекторе объектов у меня только 2 значения bsNone, bsSingle.
И тоже самое при
Pascal
1
ComboBox1.BorderStyle :=TFormBorderStyle(Combobox1.ItemIndex);
krapotkin
 Аватар для krapotkin
1959 / 1905 / 490
Регистрация: 14.04.2014
Сообщений: 9,308
02.01.2017, 17:45     Как менять BorderStyle с пом. Combobox? #4
самый нормальный как раз вариант с массивом
а borderstyle насколько я помню, устанавливается при создании формы, поэтому мало выбрать значение, нужно еще и пересоздать ее с этим значением
но, как пишут сейчас в интернетах. "это не точно" )))
Joey
Джоуи Скалолазер
 Аватар для Joey
242 / 156 / 36
Регистрация: 05.05.2015
Сообщений: 1,123
Записей в блоге: 1
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
Супер-модератор
 Аватар для volvo
22080 / 14385 / 4044
Регистрация: 22.10.2011
Сообщений: 25,452
Записей в блоге: 2
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?
Еще ссылки по теме:

ComboBox and DBLookupComboBox Lazarus
Менять местами массивы, переменные Lazarus
Как по нажатию мыши менять TImage и перерисовывать на него bmp с другого TImage? Lazarus
Как сохранять и загружать типизированные файлы с пом. TStream-ов? Lazarus
Lazarus Автозаполнение значениями ComboBox

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

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

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

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