Текущий архив: 2005.07.25;
Скачать: CL | DM;
Вниз
Как записать положения CheckBoxа в inifile. Найти похожие ветки
← →
Logan (2005-07-02 23:34) [0]Как записать положения CheckBoxа в inifile, а при загрузке программы его прочитать!!!
← →
Просто Джо © (2005-07-02 23:38) [1]
uses IniFiles;
var
IniFile: TIniFile;
...
IniFile := TIniFile.Create ("d:\inifile.ini");
IniFile.WriteBool ("Section","MyCheckBox",CheckBox1.Checked);
CheckBox1.Checked := IniFile.ReadBool ("Section","MyCheckBox",False);
← →
Logan (2005-07-03 13:10) [2]Всем приятного время препровождения!!!
У меня тут проблемка образовалась, а как решить не знаю кто может помогите.
Есть две формы MainForm и Form1, на MainForm расположен CheckBox1 и когда пользователь тыкает в этот CheckBox1(Caption=>Не показывать это окно) там появляется галочка, чтобы при старте моей программы MainForm не показывалось, а показывалась Form1 и нада чтобы это всё записывалось в Iniфайл, а при старте соответственно читалось!!!procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
var Ini: Tinifile;
begin
Ini:=TiniFile.Create(extractfilepath(paramstr(0))+"ConfigFile.ini");
Ini.WriteBool("Start", "Load", CheckBox1.Checked);
Ini.Free;
end;
procedure TMainForm.FormCreate(Sender: TObject);
var Ini: Tinifile;
begin
Ini:=TiniFile.Create(extractfilepath(paramstr(0))+"ConfigFile.ini");
if Ini.ReadBool("Start", "Load", False) then
visible := true;
form1.Visible := false;
if Ini.ReadBool("Start", "Load", True) then
visible := false;
form1.Visible := true;
Ini.Free;
end;
Вот что у меня получилось сваргинить, и конечно это всё не работает... Люди помогите исправить... хмм... А на form1 случайно не надо вешать код для проверки CheckBoxов!!!
← →
Eraser © (2005-07-03 13:11) [3]Logan (03.07.05 13:10) [2]
Сама задумка имхо неправильная.
← →
Logan (2005-07-03 13:13) [4]А как её правильно реализовать!!!
← →
lookin © (2005-07-03 13:19) [5]Сама задумка (имхо) правильная.
А не работает, вероятно, из-за того, что надо было написать так:
procedure TMainForm.FormCreate(Sender: TObject);
var Ini: Tinifile;
begin
Ini:=TiniFile.Create(extractfilepath(paramstr(0))+"ConfigFile.ini");
if Ini.ReadBool("Start", "Load", False) then begin
visible := true;
form1.Visible := false; end;
if Ini.ReadBool("Start", "Load", True) then begin
visible := false;
form1.Visible := true; end;
Ini.Free;
end;
← →
Logan (2005-07-03 13:36) [6]Вылетает ошибка Access violation at address 00486F2A in module...
Скорей всего ошибка происходит при чтении, но почему???
← →
Logan (2005-07-03 13:44) [7]Смотрите что получается, если всё это поставить на OnShow, при запуске появляется сообщение: Cannot change Visible in OnShow or OnHide!
← →
KilkennyCat © (2005-07-03 14:00) [8]а мне вот интересно, что такое выдает Ini.ReadBool, что после него надо еще разжевывать труе-фалзе...
Ini:=TiniFile.Create(extractfilepath(paramstr(0))+"ConfigFile.ini");
visible := Ini.ReadBool("Start", "Load", False);
form1.Visible := not visible;
Ini.Free;
какое значение по умолчанию - это уж зависит от чего задумали...
← →
Logan (2005-07-03 14:08) [9]Ошибки не выскакивают если код ставить на TForm1.FormCreate и даже работает... но почему-то MainForm показывается всё равно, даже если стоит MainForm.Visible := false;
Кто-нибудь знает почему так происходит???
← →
KilkennyCat © (2005-07-03 14:10) [10]Потому что сие надо делать в модуле проекта.
← →
Logan (2005-07-03 14:12) [11]KilkennyCat это не работает!!!
← →
Logan (2005-07-03 14:14) [12]Так как-же быть???
← →
KilkennyCat © (2005-07-03 14:30) [13]Что не работает? В проекте выбор, какая форма будет при запуске главной? невжисть не поверю...
← →
KilkennyCat © (2005-07-03 14:33) [14]Я не могу Вам привести готовый код - нет под рукой Делфи, а в теории могу наврать. Но если Вы в файле проекта просто поиграетесь расположением форм - все станет ясно.
← →
easy © (2005-07-03 14:34) [15]
{Project1.dpr}
program Project1;
uses
Forms,
Unit1 in "Unit1.pas" {Form1},
Unit2 in "Unit2.pas" {Form2},
inifiles,
SysUtils;
{$R *.res}
var
ini:TInifile;
showme:boolean;
begin
Application.Initialize;
ini:=TInifile.Create(extractfilepath(paramstr(0))+"data.ini");
try
showme:=ini.ReadBool("Start", "Load", True);
finally
ini.Free;
end;
if showme then
with TForm1.Create(nil) do
try
ShowModal;
finally
Free;
end;
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
{Unit1.pas}
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,inifiles;
type
TForm1 = class(TForm)
CheckBox1: TCheckBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
ini:TInifile;
begin
ini:=TInifile.Create(extractfilepath(paramstr(0))+"data.ini");
try
ini.WriteBool("Start", "Load", Checkbox1.Checked);
finally
ini.Free;
end;
end;
end.
← →
Logan (2005-07-03 14:41) [16]KilkennyCat © (03.07.05 14:30) [13] а как поменять формы...
← →
KilkennyCat © (2005-07-03 14:43) [17]копи-пасте. Лучше всего подумать над [15]
← →
Logan (2005-07-03 15:21) [18]вСЁ сделал по вышенаписаному коду... при запуске вылетает ошибка: Исключение неизвестное програмное исключение.. ЖМУ ок Exception EInvalidOperation in module...Cannot make a visible window modal!
← →
Alexander Panov © (2005-07-03 15:29) [19]Logan (03.07.05 15:21) [18]
А отладкой заниматься не надо?
← →
Logan (2005-07-03 15:29) [20]Хмм... если вместо ShowModal поставить Show то ошибок нет, а вот когда из Form1 пытаешься вызвать MainForm.Visible := true вылетает ошибка???
← →
Logan (2005-07-03 15:32) [21]Alexander Panov © (03.07.05 15:29) [19]
А это поможет...
← →
KilkennyCat © (2005-07-03 15:38) [22]
> Alexander Panov ©
до отладки тут далеко ;) тут явное непонимание.
> Logan
сформулируйте еще раз полностью что Вы хотите. Только полностью. А то началось с инифайла, а перешло уже к работе с формами...
← →
Alexander Panov © (2005-07-03 15:47) [23]Вот пример.
В зависимости от установленного флажка главной становится либо Form1, либо Form2.program Project2;
uses
Forms,
Unit1 in "Unit1.pas" {Form1},
Unit2 in "Unit2.pas" {Form2},
SysUtils,
IniFiles;
{$R *.res}
var
isForm1: Boolean;
Ini: TIniFile;
begin
Application.Initialize;
Ini := TIniFIle.Create(ExtractFilePath(ParamStr(0))+"data.ini");
try
isForm1 := Ini.ReadBool("Main","isForm1",True);
finally
Ini.Free;
end;
if isForm1 then
begin
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
end
else
begin
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm1, Form1);
end;
Application.Run;
end.
Для того, чтобы главной в приложении стала нужная форма, достаточно создать ее первой в приложении.
← →
Logan (2005-07-04 20:24) [24]KilkennyCat © (03.07.05 15:38) [22]
Проблема вот в чём: есть программа состоящая из двух форм mainform и form1. При запуске программы появляется mainform и предлагает выбрать варианты загрузки моей программы, и если пользователю не нужно чтобы появлялось это окно (mainform с выбором вариантов загрузки), то он ставит галочку в CheckBoxе чтобы это окно не показывалось при запуске программы, а сразу появлялась form1(т.е. сама программа). А IniFile нужен для того чтобы призапуске программа определяла CheckBox тру(при запуске mainform не показывается, а показывается сразу form1) или не тру(сначало показывается mainform, а потом form1). Вот такова концепция моей задумки!!!
← →
Eraser © (2005-07-04 20:34) [25]Не пойму - зачем мудрить с главной формой приложения. Главная форма - есть главная форма, обычно это основное окно программы.
В OnCreate формочки с выбором, в пишиif bShow then
Show;
где bShow считано из Ini.
← →
Logan (2005-07-04 20:55) [26]Придётся анализировать всё инфу что здесь написали...
Страницы: 1 вся ветка
Текущий архив: 2005.07.25;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.01 c