Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.07.25;
Скачать: [xml.tar.bz2];

Вниз

Как записать положения 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.01 c
1-1120744314
Apachi
2005-07-07 17:51
2005.07.25
sMDIForm и sMDIChild


4-1117344868
NikNet
2005-05-29 09:34
2005.07.25
Как отключить модуль SYSTEM.PAS?


4-1117315611
gdaujk
2005-05-29 01:26
2005.07.25
Создание CheckListBox средствами WinAPI.


4-1117203919
alex_***
2005-05-27 18:25
2005.07.25
Как узнать хендл своего процесса


4-1117194360
Masta Hookah
2005-05-27 15:46
2005.07.25
Replace Tray System Clock





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский