ОБСУЖДЕНИЕ

Эффект нажатой клавиши

6 ответов 8,5 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Статус
Закрыто для дальнейших ответов.
Автор темы
Есть кнопка SpeedButton свойство Flat утсановлено True. Мне необходимо при нажатии этой кнопки , чтобы она оставалась нажатой до определенного момента!
Так удобнее пользователю видеть, что он нажал (есть и такие!). Заранее спасибо!
 
Устанвливаете свойство GroupIndex в число отличное от нуля и свойство AllowAllUp в True и всё будет работать...
 
А как правильно записать и считать из ini состояние кнопки ?
Пробую так :
Код:
destructor TForm1.Destroy;
...
WriteBool('Editor', 'WordWpap', SpeedButton1.Down);
PrgINI.Free;
inherited Destroy;
end;

procedure TForm1.CreateParams(var Params: TCreateParams);
...
SpeedButton1.Down := ReadBool('Editor', 'WordWpap', True);
...
end;
Запись в файл работает, а при старте программа вылетает(не может прочитать?) :angry:
 
А Вы уже создали Ini файл перед чтением ?
 
Вроде да, остальное ведь работает...


Код:
constructor TForm1.Create(AOwner: TComponent);
begin
PrgINI := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'BBcode.ini');
inherited Create(AOwner);
end;

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin
Y := PrgINI.ReadInteger('Position', 'Top', Top);
X := PrgINI.ReadInteger('Position', 'Left', Left);
Width := PrgINI.ReadInteger('Position', 'Width', Width);
Height := PrgINI.ReadInteger('Position', 'Height', Height);
Memo.Font.Charset := PrgINI.ReadInteger('Editor', 'CharSet', RUSSIAN_CHARSET);
Memo.Font.Color := PrgINI.ReadInteger('Editor', 'FontColor', clWindowText);
Memo.Font.Size := PrgINI.ReadInteger('Editor', 'FontSize', 10);
Memo.Color := PrgINI.ReadInteger('Editor', 'EditorColor', clWindow);
SpeedButton1.Down := ReadBool('Editor', 'WordWpap', True);
end;
end;

procedure TForm1.DoShow;
var
aWindowState: integer;
begin
aWindowState := PrgINI.ReadInteger('position', 'WindowState', 0);
case aWindowState of
0: WindowState := wsNormal;
1: WindowState := wsMinimized;
2: WindowState := wsMaximized;
end;
end;

destructor TForm1.Destroy;
begin
if WindowState = wsNormal then
begin
PrgINI.WriteInteger('Position', 'Top', Top);
PrgINI.WriteInteger('Position', 'Left', Left);
end;
PrgINI.WriteInteger('Position', 'Width', 802);
PrgINI.WriteInteger('Position', 'Height', 606);
case WindowState of
wsNormal: PrgINI.WriteInteger('Position', 'WindowState', 0);
wsMinimized: PrgINI.WriteInteger('Position', 'WindowState', 1);
wsMaximized: PrgINI.WriteInteger('Position', 'WindowState', 2);
end;
PrgINI.WriteInteger('Editor', 'CharSet', Memo.Font.CHARSET);
PrgINI.WriteInteger('Editor', 'FontColor', Memo.Font.Color);
PrgINI.WriteInteger('Editor', 'FontSize', Memo.Font.Size);
PrgINI.WriteInteger('Editor', 'EditorColor', Memo.Color);
PrgINI.WriteBool('Editor', 'WordWpap', SpeedButton1.Down);
PrgINI.Free;
inherited Destroy;
end;

В ини записывается строка : WordWpap с параметром 0 или 1. :angry:
 
Ну всё правильно .. значение истина или ложь...

Странно .. а чего ж Вы не читаете как все остальные параметры:

Код:
	SpeedButton1.Down := PrgINI.ReadBoolean('Editor', 'WordWpap', True);

А используете ReadBool?
 
Наверное, что-то не то делаю...
В uses добавлен inifiles, но там нет функции ReadBoolean, а только ReadBool.
:angry:



P.S.


Заработало...
Пришлось переместить функцию ReadBool из CreateParams в FormCreate и добавить обработку SpeedButton1.

Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
...
SpeedButton1.Down := PrgINI.ReadBool('Editor', 'WordWpap', True);
if SpeedButton1.Down = True then
begin
Memo.WordWrap := True;
Memo.ScrollBars := ssVertical;
end;
if SpeedButton1.Down = False then
begin
Memo.WordWrap := False;
Memo.ScrollBars := ssBoth;
end;
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if SpeedButton1.Down = True then
begin
Memo.WordWrap := True;
Memo.ScrollBars := ssVertical;
end;
if SpeedButton1.Down = False then
begin
Memo.WordWrap := False;
Memo.ScrollBars := ssBoth;
end;
end;

Меньше кода сделать не получилось...

Barmutik, спасибо за участие! :)
 
Статус
Закрыто для дальнейших ответов.