Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.53 MB
Время: 0.037 c
8-1111666278
Romantic
2005-03-24 15:11
2005.07.25
Инвертирование при видеозахвате


1-1120918797
Pasha L
2005-07-09 18:19
2005.07.25
момент, когда я меняю положение скролла у stringgrid


11-1085116747
Mitka
2004-05-21 09:19
2005.07.25
При нажатии на кнопку мышкой она осталась нажататой. Как?


4-1117137483
cherrex
2005-05-26 23:58
2005.07.25
OCR для DELPHI


14-1120244761
Alx2
2005-07-01 23:06
2005.07.25
Вид на Delphi из космоса