mathieu57100
Messages postés103Date d'inscriptionjeudi 24 juin 2004StatutMembreDernière intervention 9 février 2006
-
3 mars 2005 à 16:56
mathieu57100
Messages postés103Date d'inscriptionjeudi 24 juin 2004StatutMembreDerniè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...
mathieu57100
Messages postés103Date d'inscriptionjeudi 24 juin 2004StatutMembreDerniè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...
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;