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

Lazarus

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

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

02.01.2017, 15:41. Просмотров 292. Ответов 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;
Если кто знает лучше, просьба поделиться
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2017, 15:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как менять BorderStyle с пом. Combobox? (Lazarus):

Как добавить тень к TImage, когда BorderStyle:=clNone; - Delphi
Привет, дело вот в чём: Нужно приложить к TImage тень, когда BorderStyle:=clNone;. Есть вариант: protected procedure...

Как сохранять и загружать типизированные файлы с пом. TStream-ов? - Lazarus
Есть тип TMyType = record name, forname: string end; Обычно записываю и считываю из файлов процедурными путями var f: file of...

Прокрутка формы при BorderStyle = bsNone? - Delphi
Как сделать прокрутку формы при BorderStyle = bsNone? Сама форма за счет динамически созданных компонентов увеличивается, и компоненты...

пом-те доделать программу - Delphi
здравствуйте, дорогие программисты!помогите пожалуйста довести задачу до ума...мне рядом с кнопками открыть сохранить вырезать и т.д нужно...

Как менять надпись приложения на панели задач? - Delphi
Хочу с каждую секунду менять надпись приложения на панели задач. Form1.Caption:=IntToStr(30); меняет только у формы. Форма в приложении...

Как правильно менять размер текста в memo? - Lazarus
знаю только два явных способа сменить размер текста в tmemo: Memo1.Font.Height := i и Memo1.Font.Size := i. А как предпочтительнее это...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
23558 / 15552 / 4595
Регистрация: 22.10.2011
Сообщений: 27,578
Записей в блоге: 5
02.01.2017, 15:52 #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;
я вообще не хотел упоминать
1
Puporev
Модератор
51925 / 39855 / 13190
Регистрация: 18.05.2008
Сообщений: 91,264
02.01.2017, 16:13 #3
Интересно, а что меняется визуально? Сколько ни менял значения ничего не увидел. Кстати в инспекторе объектов у меня только 2 значения bsNone, bsSingle.
И тоже самое при
Pascal
1
ComboBox1.BorderStyle :=TFormBorderStyle(Combobox1.ItemIndex);
1
krapotkin
2553 / 2431 / 615
Регистрация: 14.04.2014
Сообщений: 11,751
Записей в блоге: 4
02.01.2017, 17:45 #4
самый нормальный как раз вариант с массивом
а borderstyle насколько я помню, устанавливается при создании формы, поэтому мало выбрать значение, нужно еще и пересоздать ее с этим значением
но, как пишут сейчас в интернетах. "это не точно" )))
0
Joey
Джоуи Скалолазер
406 / 320 / 89
Регистрация: 05.05.2015
Сообщений: 1,841
Записей в блоге: 2
03.01.2017, 02:08  [ТС] #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.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
23558 / 15552 / 4595
Регистрация: 22.10.2011
Сообщений: 27,578
Записей в блоге: 5
03.01.2017, 10:51 #6
Цитата Сообщение от Joey Посмотреть сообщение
причем днем такого не было
Чудес не бывает. Значит, что-то изменилось, и либо та строка, которая записана в Text комбобокса уже не является одной из вышеперечисленных и не может быть корректно преобразована в TFormBorderStyle, либо ItemIndex не находится в допустимых границах. Проверяй, что изменилось...
0
Joey
Джоуи Скалолазер
406 / 320 / 89
Регистрация: 05.05.2015
Сообщений: 1,841
Записей в блоге: 2
03.01.2017, 20:11  [ТС] #7
volvo, не знаю, почему, не смог воссоздать проблему (запустил тот же сохраненный проект)

Добавлено через 18 секунд
anyway, спасибо за помощь, ребята
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2017, 20:11
Привет! Вот еще темы с ответами:

Как можно менять текст в Combobox, используя другой Combobox? - Delphi
Как можно менять текст, в Combobox используя другой Combobox, т.е. Допустим, есть два Combobox: Combobox1 и Combobox2. В первом будут...

Как запретить нескольким comboBox-ам менять одновременно данные? - C#
Приветствую всех! У меня возникла интересная проблема. Суть в следующем: Мне на форму надо кинуть 2 комбокса. Их я привязываю к базе...

С пом. директивы absolute, отсортировать по убыванию с пом. одной подпрограммы векторы из 10 и 14 вещественных компонент - Turbo Pascal
Program hz_wache; uses crt; const k=10; l=14; var i:byte; a:array of real; b:array of real; procedure sort(var m); var...

Подключение ЖД с пом. SATA, а DVD - привод с пом. IDE - Материнские платы
Если подключить к материнке ЖД, на котором будет ОС, с помощью SATA, а DVD-привод подключить с помощью IDE, не будут ли какие-либо проблемы...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.01.2017, 20:11
Ответ Создать тему
Опции темы

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