{******************************************************************} { EyWizard.pas } { } { Author : A.Nasir Senturk } { Home Page : http://www.shenturk.com } { Email : shenturk@gmail.com } { } { Date : 11.01.2007 } { Update : 23.03.2007 } { } { Sizden iki þey rica edicem: } { 1. Lutfen bu baslik kismini kaldirmayiniz. } { 2. Mumkunse bagis yapiniz. } { *****************************************************************} unit EyWizard; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, JvExControls, JvComponent, JvWizard, StdCtrls, ExtCtrls, ComCtrls, ImgList, ConstDef;//, JvExStdCtrls, JvEdit, JvValidateEdit; type TWizardForm = class(TForm) JvWizard1: TJvWizard; JvWizardWelcomePage1: TJvWizardWelcomePage; JvWizardInteriorPage1: TJvWizardInteriorPage; JvWizardInteriorPage2: TJvWizardInteriorPage; JvWizardInteriorPage3: TJvWizardInteriorPage; JvWizardWelcomePage2: TJvWizardWelcomePage; Label1: TLabel; Label3: TLabel; Label4: TLabel; UserEdit: TLabeledEdit; Label2: TLabel; PassEdit: TLabeledEdit; Label5: TLabel; RetryEdit: TLabeledEdit; Label6: TLabel; Label7: TLabel; Label10: TLabel; ComboBox1: TComboBox; Label11: TLabel; CheckBox1: TCheckBox; Label13: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; Label18: TLabel; Label19: TLabel; Label20: TLabel; Label21: TLabel; Label22: TLabel; Label23: TLabel; Label24: TLabel; Label25: TLabel; Label26: TLabel; Label27: TLabel; Label28: TLabel; ImageList1: TImageList; ComboBox2: TComboBox; Label8: TLabel; Label9: TLabel; LabeledEdit3: TLabeledEdit; LabeledEdit4: TLabeledEdit; LabeledEdit9: TLabeledEdit; LabeledEdit10: TLabeledEdit; LabeledEdit11: TLabeledEdit; LabeledEdit12: TLabeledEdit; LabeledEdit13: TLabeledEdit; procedure FormCreate(Sender: TObject); procedure JvWizard1ActivePageChanging(Sender: TObject; var ToPage: TJvWizardCustomPage); procedure JvWizard1FinishButtonClick(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure ComboBox2Change(Sender: TObject); procedure LabeledEdit3KeyPress(Sender: TObject; var Key: Char); procedure LabeledEdit3Enter(Sender: TObject); procedure LabeledEdit3Exit(Sender: TObject); procedure LabeledEdit4Enter(Sender: TObject); procedure LabeledEdit4Exit(Sender: TObject); procedure LabeledEdit9Enter(Sender: TObject); procedure LabeledEdit9Exit(Sender: TObject); procedure LabeledEdit10Enter(Sender: TObject); procedure LabeledEdit10Exit(Sender: TObject); procedure LabeledEdit11Enter(Sender: TObject); procedure LabeledEdit11Exit(Sender: TObject); procedure LabeledEdit12Enter(Sender: TObject); procedure LabeledEdit12Exit(Sender: TObject); procedure LabeledEdit13Enter(Sender: TObject); procedure LabeledEdit13Exit(Sender: TObject); private { Private declarations } PriceRecord: TPriceRecord; procedure SaveOptions; procedure UpdateAdapterList; procedure UpdatePriceList; procedure UpdatePriceScreen; public { Public declarations } end; var WizardForm: TWizardForm; implementation uses IpHlpAPI, IPHelper, OptnsDlg; {$R *.dfm} procedure TWizardForm.FormCreate(Sender: TObject); begin JvWizardWelcomePage2.WaterMark.Image.Picture.Assign( JvWizardWelcomePage1.WaterMark.Image.Picture); PriceRecord.Quota := 4.00; PriceRecord.MonthlyPay := 29.00; PriceRecord.PayPerMB := 0.010; PriceRecord.DownSpeed := 1024; PriceRecord.UpSpeed := 256; UpdateAdapterList; UpdatePriceList; GetPriceListData(0, PriceRecord); UpdatePriceScreen; end; procedure TWizardForm.UpdateAdapterList; var MibArr: IpHlpAPI.TMIBIfArray; I: Integer; begin Get_IfTableMIB(MibArr); if Length(MibArr) > 0 then for I := Low(MIBArr) to High(MIBArr) do begin ComboBox1.Items.Add(MIBArr[I].bDescr); end; ComboBox1.ItemIndex := 0; end; procedure TWizardForm.JvWizard1ActivePageChanging(Sender: TObject; var ToPage: TJvWizardCustomPage); begin if ToPage = JvWizardWelcomePage2 then begin Label15.Caption := WideFormat(': %s', [UserEdit.Text]); Label17.Caption := ': ••••••••••'; Label19.Caption := WideFormat(': %s', [LabeledEdit3.Text]); Label21.Caption := WideFormat(': %s', [LabeledEdit4.Text]); Label23.Caption := WideFormat(': %s', [LabeledEdit9.Text]); if ComboBox1.ItemIndex >= 0 then begin Label25.Hint := ComboBox1.Items[ComboBox1.ItemIndex]; Label25.ShowHint := True; Label25.Caption := WideFormat(': %s', [ComboBox1.Items[ComboBox1.ItemIndex]]); end else Label25.Caption := ': Tanýmlanmamýþ.'; Label27.Caption := WideFormat(': %s/%s', [LabeledEdit10.Text, LabeledEdit11.Text]); Exit; end; if JvWizard1.ActivePageIndex <> 1 then Exit; if ToPage = JvWizardWelcomePage1 then Exit; if UserEdit.Text = '' then begin Application.MessageBox(sUserCannotEmpty, sErrorText, MB_ICONERROR); UserEdit.SetFocus; ToPage := JvWizardInteriorPage1; Exit; end; if PassEdit.Text = '' then begin Application.MessageBox(sPassCannotEmpty, sErrorText, MB_ICONERROR); PassEdit.SetFocus; ToPage := JvWizardInteriorPage1; Exit; end; if RetryEdit.Text = '' then begin Application.MessageBox(sRetryCannotEmpty, sErrorText, MB_ICONERROR); RetryEdit.SetFocus; ToPage := JvWizardInteriorPage1; Exit; end; if PassEdit.Text <> RetryEdit.Text then begin Application.MessageBox(sPassMismatch, sErrorText, MB_ICONERROR); RetryEdit.SetFocus; ToPage := JvWizardInteriorPage1; Exit; end; end; procedure TWizardForm.JvWizard1FinishButtonClick(Sender: TObject); begin SaveOptions; end; procedure TWizardForm.SaveOptions; begin RijndaelEncrypt(UserEdit.Text + ' ' + PassEdit.Text); PriceRecord.Quota := SuffixToFloat(LabeledEdit3.Text, ' GB', 4.00); if PriceRecord.Quota <= 0.00 then PriceRecord.Quota := 4.00; IniFile.WriteFloat(sGeneral, sQuota, PriceRecord.Quota / 1.00 * GigaByte); PriceRecord.MonthlyPay := SuffixToFloat(LabeledEdit4.Text, ' YTL', 29.00); IniFile.WriteFloat(sGeneral, sMonthlyPay, PriceRecord.MonthlyPay); PriceRecord.PayPerMB := SuffixToFloat(LabeledEdit9.Text, ' YTL', 0.010); IniFile.WriteFloat(sGeneral, sPayPerMB, PriceRecord.PayPerMB); PriceRecord.DownSpeed := SuffixToFloat(LabeledEdit10.Text, ' Kbps', 1024); IniFile.WriteFloat(sNetworkMonitor, sBandWidthDown, PriceRecord.DownSpeed); PriceRecord.UpSpeed := SuffixToFloat(LabeledEdit11.Text, ' Kbps', 256); IniFile.WriteFloat(sNetworkMonitor, sBandWidthUp, PriceRecord.UpSpeed); PriceRecord.MaxPayRef := SuffixToFloat(LabeledEdit12.Text, ' YTL', 99.00); IniFile.WriteFloat(sGeneral, sMaxPayRef, PriceRecord.MaxPayRef); PriceRecord.PayPercent := PrefixToFloat(LabeledEdit13.Text, '% ', 25.00); IniFile.WriteFloat(sGeneral, sPayPercent, PriceRecord.PayPercent); { PriceRecord.Quota := JvValidateEdit1.Value; IniFile.WriteFloat(sGeneral, sQuota, PriceRecord.Quota / 1.00 * GigaByte); PriceRecord.MonthlyPay := JvValidateEdit2.Value; IniFile.WriteFloat(sGeneral, sMonthlyPay, PriceRecord.MonthlyPay); PriceRecord.PayPerMB := JvValidateEdit3.Value; IniFile.WriteFloat(sGeneral, sPayPerMB, PriceRecord.PayPerMB); PriceRecord.DownSpeed := JvValidateEdit4.Value; IniFile.WriteFloat(sNetworkMonitor, sBandWidthDown, PriceRecord.DownSpeed); PriceRecord.UpSpeed := JvValidateEdit5.Value; IniFile.WriteFloat(sNetworkMonitor, sBandWidthUp, PriceRecord.UpSpeed); } IniFile.WriteInteger(sNetworkMonitor, sAdapterIndex, ComboBox1.ItemIndex); IniFile.WriteString(sNetworkMonitor, sAdapter, ComboBox1.Items[ComboBox1.ItemIndex]); end; procedure TWizardForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if JvWizard1.ActivePageIndex > 0 then if ModalResult = mrCancel then begin CanClose := Application.MessageBox(sWizardNotCompleted, sConfirmText, MB_ICONQUESTION or MB_YESNO) = IDYES; end; end; procedure TWizardForm.UpdatePriceList; var Index, Count: Integer; PriceRecord: TPriceRecord; begin ComboBox2.Clear; Count := GetPriceListCount(); for Index := 0 to Count - 1 do begin GetPriceListData(Index, PriceRecord); ComboBox2.Items.Add(PriceRecord.Description); end; ComboBox2.ItemIndex := 0; end; procedure TWizardForm.ComboBox2Change(Sender: TObject); begin if ComboBox2.ItemIndex <> -1 then begin GetPriceListData(ComboBox2.ItemIndex, PriceRecord); UpdatePriceScreen; end; end; procedure TWizardForm.UpdatePriceScreen; begin LabeledEdit3.Text := FormatFloat('#,0 GB', PriceRecord.Quota); LabeledEdit4.Text := FormatFloat('#,##0.00 YTL', PriceRecord.MonthlyPay); LabeledEdit9.Text := FormatFloat('#,###0.000 YTL', PriceRecord.PayPerMB); LabeledEdit10.Text := FormatFloat('#,0 Kbps', PriceRecord.DownSpeed); LabeledEdit11.Text := FormatFloat('#,0 Kbps', PriceRecord.UpSpeed); LabeledEdit12.Text := FormatFloat('#,##0.00 YTL', PriceRecord.MaxPayRef); LabeledEdit13.Text := FormatFloat('% #,0', PriceRecord.PayPercent); { JvValidateEdit1.Value := PriceRecord.Quota; JvValidateEdit2.Value := PriceRecord.MonthlyPay; JvValidateEdit3.Value := PriceRecord.PayPerMB; JvValidateEdit4.Value := PriceRecord.DownSpeed; JvValidateEdit5.Value := PriceRecord.UpSpeed; } end; procedure TWizardForm.LabeledEdit3KeyPress(Sender: TObject; var Key: Char); begin if not (Key in [#8, '0'..'9', DecimalSeparator]) then Key := #0; end; procedure TWizardForm.LabeledEdit3Enter(Sender: TObject); begin LabeledEdit3.Text := FormatFloat('#,0', PriceRecord.Quota); end; procedure TWizardForm.LabeledEdit3Exit(Sender: TObject); begin PriceRecord.Quota := SuffixToFloat(LabeledEdit3.Text, ' GB', 4.00); LabeledEdit3.Text := FormatFloat('#,0 GB', PriceRecord.Quota); end; procedure TWizardForm.LabeledEdit4Enter(Sender: TObject); begin LabeledEdit4.Text := FormatFloat('#,##0.00', PriceRecord.MonthlyPay); end; procedure TWizardForm.LabeledEdit4Exit(Sender: TObject); begin PriceRecord.MonthlyPay := SuffixToFloat(LabeledEdit4.Text, ' YTL', 29.00); LabeledEdit4.Text := FormatFloat('#,##0.00 YTL', PriceRecord.MonthlyPay); end; procedure TWizardForm.LabeledEdit9Enter(Sender: TObject); begin LabeledEdit9.Text := FormatFloat('#,###0.000', PriceRecord.PayPerMB); end; procedure TWizardForm.LabeledEdit9Exit(Sender: TObject); begin PriceRecord.PayPerMB := SuffixToFloat(LabeledEdit9.Text, ' YTL', 0.010); LabeledEdit9.Text := FormatFloat('#,###0.000 YTL', PriceRecord.PayPerMB); end; procedure TWizardForm.LabeledEdit10Enter(Sender: TObject); begin LabeledEdit10.Text := FormatFloat('#,0', PriceRecord.DownSpeed); end; procedure TWizardForm.LabeledEdit10Exit(Sender: TObject); begin PriceRecord.DownSpeed := SuffixToFloat(LabeledEdit10.Text, ' Kbps', 1024); LabeledEdit10.Text := FormatFloat('#,0 Kbps', PriceRecord.DownSpeed); end; procedure TWizardForm.LabeledEdit11Enter(Sender: TObject); begin LabeledEdit11.Text := FormatFloat('#,0', PriceRecord.UpSpeed); end; procedure TWizardForm.LabeledEdit11Exit(Sender: TObject); begin PriceRecord.UpSpeed := SuffixToFloat(LabeledEdit11.Text, ' Kbps', 256); LabeledEdit11.Text := FormatFloat('#,0 Kbps', PriceRecord.UpSpeed); end; procedure TWizardForm.LabeledEdit12Enter(Sender: TObject); begin LabeledEdit12.Text := FormatFloat('#,##0.00', PriceRecord.MaxPayRef); end; procedure TWizardForm.LabeledEdit12Exit(Sender: TObject); begin PriceRecord.MaxPayRef := SuffixToFloat(LabeledEdit12.Text, ' YTL', 99.00); LabeledEdit12.Text := FormatFloat('#,##0.00 YTL', PriceRecord.MaxPayRef); end; procedure TWizardForm.LabeledEdit13Enter(Sender: TObject); begin LabeledEdit13.Text := FormatFloat('#,0', PriceRecord.PayPercent); end; procedure TWizardForm.LabeledEdit13Exit(Sender: TObject); begin PriceRecord.PayPercent := PrefixToFloat(LabeledEdit13.Text, '% ', 25.00); LabeledEdit13.Text := FormatFloat('% #,0', PriceRecord.PayPercent); end; end.