Pb radioButton

mathieu57100 Messages postés 103 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 9 février 2006 - 3 mars 2005 à 16:56
mathieu57100 Messages postés 103 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 9 février 2006 - 4 mars 2005 à 08:26
bonjour, j'ai encore un ptit prob...

j'ai une fiche principale sur laquelle un bouton affiche une 2e fiche.
c'est sur cette 2e fiche que j'ai un problème:

J'ai 2 boutons OK et ANNULER;
- OK mémorise dans la base de registre l'état de toutes les checkbox, radiobutton...
- ANNULER qui ferme juste la fiche...

lorsque je la recharge par mon bouton de la fiche1, j'ai un code sur l'évènement ONSHOW qui execute un code si aucune sauvegarde dans la base de registre n'a été effectuée.
voici ce code:

Registre := TRegistry.Create;
Registre.RootKey := HKEY_CURRENT_USER;
if Registre.KeyExists('Software\Appli') then
begin
Registre.OpenKey('Software\Appli', false);
if Registre.ReadString('Mode') = '1' then
radioButton1.Checked := true
else
radioButton2.Checked := true;
if Registre.ReadString('Systray') = '1' then
radioButton3.Checked := true
else
radioButton4.Checked := true;
Registre.CloseKey;
Registre.Free;
end
else
begin
radioButton1.checked :=true;
radioButton3.checked :=true;
end;

radioButton1 et radioButton2 sont dans un cadre et radioButton3 et radioButton4 sont dans un autre.

le problème se pose avec radioButton 1 et 2 lorsque qu'aucune clé n'est enregistrée dans la base de registre;
si je coche radioButton2 et que je fais ANNULER puis que j'ouvre à nouveau la fiche,
radioButton2 est toujours cohée.
je 'ai pas ce problème dans l'autre cadre...

si quelqu'un a une idée, parce que là je planne complètement...

merci d'avance

4 réponses

ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
3 mars 2005 à 17:52
ça doit venir du fait que :
if Registre.ReadString('Mode') = '1' then
radioButton1.Checked : = true
else
radioButton2.Checked := true;

coche le bouton 2 quand la valeur 'Mode' n'existe pas ...

tu peux tester la présence de la valeur en faisant : if ValueExists('Mode') then...


@+
Bonne Prog'
Nico



<HR>
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !
0
mathieu57100 Messages postés 103 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 9 février 2006
3 mars 2005 à 21:55
non je ne pense pas parce que si l'option de radioButton2 est cochée, lorsqu'on valide, j'ai le code suivant:

if radioButton1.checked = true then
registre.writestring('Mode', '1')
else
registre.writestring('Mode','2');

donc la clé Mode existe toujour, je ne veux pas m'amuser à supprimer la clé si l'option 2 est choisit...mais peu être que je n'emploie pas la bonne méthode...
0
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
3 mars 2005 à 22:48
envoie le code complet svp...


@+
Bonne Prog'
Nico



<HR>
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !
0
mathieu57100 Messages postés 103 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 9 février 2006
4 mars 2005 à 08:26
voila...
frmParam est ma 2e fiche appellé depuis la 1ere par un showmodal.

unit uParam;


interface


uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, ComCtrls, Registry;


type
TfrmParam = class(TForm)
lstParam: TListBox;
pnlMode: TPanel;
pnlMessagerie: TPanel;
pnlTemporisation: TPanel;
pnlJournal: TPanel;
pnlAlertes: TPanel;
pnlDivers: TPanel;
pnlEnregistrement: TPanel;
pnlAbout: TPanel;
btOK: TSpeedButton;
btAnnuler: TSpeedButton;
Label1: TLabel;
lblModeWeb: TLabel;
cbbListeSites: TComboBox;
btAddSite: TSpeedButton;
btDelSite: TSpeedButton;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
edExpediteur: TEdit;
edObjet: TEdit;
edDestinataire: TEdit;
edServeur: TEdit;
edPort: TEdit;
cbSendMail: TCheckBox;
Label2: TLabel;
Label9: TLabel;
tbDelai: TTrackBar;
lblDelai: TLabel;
Label10: TLabel;
cbLogOpen: TCheckBox;
cbLogChangeIP: TCheckBox;
cbLogMail: TCheckBox;
btLogImprimer: TSpeedButton;
btLogAfficher: TSpeedButton;
btLogVider: TSpeedButton;
Label11: TLabel;
cbAlerteVisuelle: TCheckBox;
cbAlerteSonore: TCheckBox;
edPathSon: TEdit;
btParcourir: TSpeedButton;
cbWindowsStart: TCheckBox;
cbSystrayStrat: TCheckBox;
rdReduireSystray: TRadioButton;
rdFermerSystray: TRadioButton;
Label12: TLabel;
Label13: TLabel;
edSN1: TEdit;
edSN4: TEdit;
edSN3: TEdit;
edSN2: TEdit;
edSN5: TEdit;
edSN6: TEdit;
btValiderSN: TSpeedButton;
Label14: TLabel;
GroupBox1: TGroupBox;
Label15: TLabel;
Label17: TLabel;
Image1: TImage;
SpeedButton1: TSpeedButton;
Label18: TLabel;
btCancel: TButton;
rdModeOrdi: TRadioButton;
rdModeWeb: TRadioButton;
procedure btAnnulerClick(Sender: TObject);
procedure lstParamClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure tbDelaiChange(Sender: TObject);
procedure btOKClick(Sender: TObject);
procedure rdModeOrdiClick(Sender: TObject);
procedure rdModeWebClick(Sender: TObject);
procedure btAddSiteClick(Sender: TObject);
procedure btDelSiteClick(Sender: TObject);
procedure btCancelClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
Registre : TRegistry;
end;


var
frmParam: TfrmParam;


implementation


{$R *.dfm}


procedure TfrmParam.btAnnulerClick(Sender: TObject);
begin
close;
end;


//...
//autre code
//...


procedure TfrmParam.FormShow(Sender: TObject);
begin
//charge les paramètres enregistrés dans la base de registres
Registre := TRegistry.Create;
Registre.RootKey := HKEY_CURRENT_USER;
if Registre.KeyExists('Software\Appli') then
begin
Registre.OpenKey('Software\Appli', false);
//mode de recherche
if Registre.ReadString('Mode') = '1' then
rdModeOrdi.Checked := true
else
rdModeWeb.Checked := true;
cbbListeSites.ItemIndex := StrToInt(Registre.ReadString('Site'));
//messagerie
edExpediteur.Text := Registre.ReadString('Expediteur');
edDestinataire.Text := Registre.ReadString('Destinataire');
edObjet.Text := Registre.ReadString('Objet');
edServeur.Text := Registre.ReadString('Serveur');
edPort.Text := Registre.ReadString('Port');
if Registre.ReadString('EnvoieMail') = '1' then
cbSendMail.Checked := true
else
cbSendMail.Checked := false;
//Temporisation
tbDelai.Position := StrToInt(Registre.ReadString('Delai'));
//journal
if Registre.ReadString('JournalOF') = '1' then
cbLogOpen.Checked := true
else
cbLogOpen.Checked := false;
if Registre.ReadString('JournalIP') = '1' then
cbLogChangeIP.Checked := true
else
cbLogChangeIP.Checked := false;
if Registre.ReadString('JournalMail') = '1' then
cbLogMail.Checked := true
else
cbLogMail.Checked := false;
//alertes
if Registre.ReadString('AlerteVisuelle') = '1' then
cbAlerteVisuelle.Checked := true
else
cbAlerteVisuelle.Checked := false;
if Registre.ReadString('AlerteSonore') = '1' then
cbAlerteSonore.Checked := true
else
cbAlerteSonore.Checked := false;
edPathSon.Text := Registre.ReadString('PathSon');
//divers
if Registre.ReadString('WindowsStart') = '1' then
cbWindowsStart.Checked := true
else
cbWindowsStart.Checked := false;
if Registre.ReadString('SystrayStart') = '1' then
cbSystrayStrat.Checked := true
else
cbSystrayStrat.Checked := false;
if Registre.ReadString('ReduireSystray') = '1' then
rdReduireSystray.Checked := true
else
rdFermerSystray.Checked := true;
Registre.CloseKey;
Registre.Free;
end
else
//ou remet les paramètres par défaut si aucun paramètre n'est mémorisé dans la base de registre
begin
//Mode de Recherche
rdModeOrdi.Checked := true;
//messagerie
edExpediteur.Text := '';
edDestinataire.Text := '';
edObjet.Text := '';
edServeur.Text := '';
edPort.Text := '';
cbSendMail.Checked := false;
//temporisation
tbDelai.Position := 0;
//journal
cbLogOpen.Checked := false;
cbLogChangeIP.Checked := false;
cbLogMail.Checked := false;
//alerte
cbAlerteVisuelle.Checked := false;
cbAlerteSonore.Checked := false;
edPathSon.Text := '';
//divers
cbWindowsStart.Checked := false;
cbSystrayStrat.Checked := false;
rdReduireSystray.Checked := true;
//enregistrement
edSN1.Text := '';
edSN2.Text := '';
edSN3.Text := '';
edSN4.Text := '';
edSN5.Text := '';
edSN6.Text := '';
end;
end;


//...
//autre code
//...


procedure TfrmParam.btOKClick(Sender: TObject);
var
Erreur : integer;
begin
////vérifie la cohérence des options
Erreur := 0;
//mode
if rdModeWeb.Checked = true then
begin
if cbbListeSites.Text = '' then
begin
MessageDlg ('Vous avez choisit le mode permettant de rechercher l''adresse IP de votre ' +
'ordinateur par l''intermédiaire d''un site Internet... Or aucun site n''est sélectionné. ' +
'Merci d''en sélectionner un.', mtWarning, [mbOk], 0);
Erreur := 1;
end;
end;
//Alertes
if cbAlerteSonore.Checked = true then
begin
if edPathSon.Text = '' then
begin
MessageDlg ('Vous avez choisit de mettre en place une alerte sonore, mais aucun fichier son n''est spécifié '+
'Veuillez en spécifier un pour utiliser l''alerte sonre.' , mtWarning, [mbOk], 0);
Erreur := 1;
end;
end;
if Erreur = 1 then exit;
//enregistre la liste des sités
cbbListeSites.Items.SaveToFile(Application.GetNamePath + 'Sites.dat');
////enregistre les paramètres dans la base de registre
Registre := TRegistry.Create;
Registre.RootKey := HKEY_CURRENT_USER;
Registre.OpenKey('Software\Appli', true);
//mode de recherche
if rdModeOrdi.Checked = true then
Registre.WriteString('Mode', '1')
else
Registre.WriteString('Mode','2');
Registre.WriteString('Site', IntToStr(cbbListeSites.ItemIndex));
//messagerie
Registre.WriteString('Expediteur', edExpediteur.Text);
Registre.WriteString('Destinataire', edDestinataire.Text);
Registre.WriteString('Objet', edObjet.Text);
Registre.WriteString('Serveur', edServeur.Text);
Registre.WriteString('Port', edPort.Text);
if cbSendMail.Checked = true then
Registre.WriteString('EnvoieMail', '1')
else
Registre.WriteString('EnvoieMail', '0');
//Temporisation
Registre.WriteString('Delai', IntToStr(tbDelai.Position));
//journal
if cbLogOpen.Checked = true then
Registre.WriteString('JournalOF', '1')
else
Registre.WriteString('JournalOF', '0');
if cbLogChangeIP.Checked = true then
Registre.WriteString('JournalIP', '1')
else
Registre.WriteString('JournalIP', '0');
if cbLogMail.Checked = true then
Registre.WriteString('JournalMail', '1')
else
Registre.WriteString('JournalMail', '0');
//alertes
if cbAlerteVisuelle.Checked = true then
Registre.WriteString('AlerteVisuelle', '1')
else
Registre.WriteString('AlerteVisuelle', '0');
if cbAlerteSonore.Checked = true then
Registre.WriteString('AlerteSonore', '1')
else
Registre.WriteString('AlerteSonore', '0');
Registre.WriteString('PathSon', edPathSon.Text);
//Divers
if cbWindowsStart.Checked = true then
Registre.WriteString('WindowsStart', '1')
else
Registre.WriteString('WindowsStart', '0');
if cbSystrayStrat.Checked = true then
Registre.WriteString('SystrayStart', '1')
else
Registre.WriteString('SystrayStart', '0');
if rdReduireSystray.Checked = true then
Registre.WriteString('ReduireSystray', '1')
else
Registre.WriteString('ReduireSystray', '0');
Registre.CloseKey;
Registre.Free;
//ferme
close;
end;


//...
//autre code
//...


procedure TfrmParam.rdModeOrdiClick(Sender: TObject);
begin
lblModeWeb.Enabled := false;
cbbListeSites.Enabled := false;
cbbListeSites.Color := clInactiveCaptionText;
btAddSite.Enabled := false;
btDelSite.Enabled := false;
end;


procedure TfrmParam.rdModeWebClick(Sender: TObject);
begin
lblModeWeb.Enabled := true;
cbbListeSites.Enabled := true;
cbbListeSites.Color := clWindow;
btAddSite.Enabled := true;
btDelSite.Enabled := true;
end;


end.
0
Rejoignez-nous