Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как записать положения CheckBoxа в inifile. [D7, WinXP]


Страницы:   1 2

Logan ©   (2005-07-02 23:34:00) 

Как записать положения CheckBoxа в inifile, а при загрузке программы его прочитать!!!


Logan   (2005-07-04 20:55:00) [1]

Придётся анализировать всё инфу что здесь написали...


Eraser   (2005-07-04 20:34:00) [2]

Не пойму - зачем мудрить с главной формой приложения. Главная форма - есть главная форма, обычно это основное окно программы.

В OnCreate формочки с выбором, в пиши
if bShow then
 Show;


где bShow считано из Ini.


Logan   (2005-07-04 20:24:00) [3]

KilkennyCat ©   (03.07.05 15:38) [22]
Проблема вот в чём: есть программа состоящая из двух форм mainform и form1. При запуске программы появляется mainform и предлагает выбрать варианты загрузки моей программы, и если пользователю не нужно чтобы появлялось это окно (mainform с выбором вариантов загрузки), то он ставит галочку в CheckBoxе чтобы это окно не показывалось при запуске программы, а сразу появлялась form1(т.е. сама программа). А IniFile нужен для того чтобы призапуске программа определяла CheckBox тру(при запуске mainform не показывается, а показывается сразу form1) или не тру(сначало показывается mainform, а потом form1). Вот такова концепция моей задумки!!!


Alexander Panov   (2005-07-03 15:47:00) [4]

Вот пример.
В зависимости от установленного флажка главной становится либо 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.


Для того, чтобы главной в приложении стала нужная форма, достаточно создать ее первой в приложении.


KilkennyCat   (2005-07-03 15:38:00) [5]


> Alexander Panov ©  


до отладки тут далеко ;) тут явное непонимание.


> Logan  


сформулируйте еще раз полностью что Вы хотите. Только полностью. А то началось с инифайла, а перешло уже к работе с формами...


Logan   (2005-07-03 15:32:00) [6]

Alexander Panov ©   (03.07.05 15:29) [19]
А это поможет...


Logan   (2005-07-03 15:29:00) [7]

Хмм... если вместо ShowModal поставить Show то ошибок нет, а вот когда из Form1 пытаешься вызвать MainForm.Visible := true вылетает ошибка???


Alexander Panov   (2005-07-03 15:29:00) [8]

Logan   (03.07.05 15:21) [18]

А отладкой заниматься не надо?


Logan   (2005-07-03 15:21:00) [9]

вСЁ сделал по вышенаписаному коду... при запуске вылетает ошибка: Исключение неизвестное програмное исключение.. ЖМУ ок  Exception EInvalidOperation in module...Cannot make a visible window modal!


KilkennyCat   (2005-07-03 14:43:00) [10]

копи-пасте. Лучше всего подумать над [15]


Logan   (2005-07-03 14:41:00) [11]

KilkennyCat ©   (03.07.05 14:30) [13] а как поменять формы...


easy   (2005-07-03 14:34:00) [12]

{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.


KilkennyCat   (2005-07-03 14:33:00) [13]

Я не могу Вам привести готовый код - нет под рукой Делфи, а в теории могу наврать. Но если Вы в файле проекта просто поиграетесь расположением форм - все станет ясно.


KilkennyCat   (2005-07-03 14:30:00) [14]

Что не работает? В проекте выбор, какая форма будет при запуске главной? невжисть не поверю...


Logan   (2005-07-03 14:14:00) [15]

Так как-же быть???


Logan   (2005-07-03 14:12:00) [16]

KilkennyCat это не работает!!!


KilkennyCat   (2005-07-03 14:10:00) [17]

Потому что сие надо делать в модуле проекта.


Logan   (2005-07-03 14:08:00) [18]

Ошибки не выскакивают если код ставить на TForm1.FormCreate и даже работает... но почему-то MainForm показывается всё равно, даже если  стоит MainForm.Visible := false;
Кто-нибудь знает почему так происходит???


KilkennyCat   (2005-07-03 14:00:00) [19]

а мне вот интересно, что такое выдает 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 13:44:00) [20]

Смотрите что получается, если всё это поставить на OnShow, при запуске появляется сообщение: Cannot change Visible in OnShow or OnHide!


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо