[ Pobierz całość w formacie PDF ]
.Left);Registry->WriteInteger("Settings\\Display","UndockTop",UndockedRect.Top);Registry->WriteInteger("Settings\\Display","UndockRight",UndockedRect.Right);Registry->WriteInteger("Settings\\Display","UndockBottom",UndockedRect.Bottom);}}// Formularz g³Ã³wnyRegistry->WriteInteger("Settings\\Position","MainFormTop",Top);Registry->WriteInteger("Settings\\Position","MainFormLeft",Left);Registry->WriteInteger("Settings\\Size","MainFormHeight",Height);Registry->WriteInteger("Settings\\Size","MainFormWidth",Width);// Pasek statusuRegistry->WriteBool("Settings\\StatusBar","Visible",StatusBar1->Visible);Registry->WriteBool("Settings","EnableKeyboard",EnableKeyboardInput);// Pasek kontrolnyfor(int i=0; iControlCount; ++i){AnsiString ControlPath = "Settings\\ControlBar\\";ControlPath += ButtonsControlBar->Controls[i]->Name;Registry->WriteInteger(ControlPath,"Left",ButtonsControlBar->Controls[i]->Left);Registry->WriteInteger(ControlPath,"Top",ButtonsControlBar->Controls[i]->Top);Registry->WriteInteger(ControlPath,"Height",ButtonsControlBar->Controls[i]->Height+2);Registry->WriteBool(ControlPath,"Visible",ButtonsControlBar->Controls[i]->Visible);}}Jak widaæ, sposób zapisu danych do Rejestru nie jest szczególnie skomplikowany;o wiele trudniejsz¹ decyzj¹ jest natomiast wybór informacji, która podlegaæbêdzie zapisowi do Rejestru.Je¿eli chodzi o panel wyœwietlacza, to po¿¹daneby³oby zachowanie jego pozycji podczas wydokowania i odtworzenie jej ponastêpnym uruchomieniu programu.Klasa okienka zarz¹dzaj¹cego wydokowan¹kontrolk¹ zapamiêtana jest pod jej w³aœciwoœci¹ FloatingDockSiteClass;standardowo klasa ta uzupe³nia kontrolkê o typowe obrze¿e i standardowy pasektytu³owy.Aby wyœwietliæ kontrolkê dok³adnie w tej samej pozycji, w którejznajdowa³a siê w momencie zapisu ustawieñ do Rejestru, musimy odczytaæ je zapomoc¹ funkcji Win32 API GetWindowRect(), do tego potrzebny nam jednak bêdzieuchwyt okna zarz¹dzaj¹cego wydokowan¹ kontrolk¹.W C++Builderze okno toreprezentowane jest przez w³aœciwoœæ HostDockSite wydokowanej kontrolki, zaœ¿¹dany uchwyt znajduje siê pod w³aœciwoœci¹ Handle tego¿ okna.Drugimparametrem wywo³ania funkcji GetWindowRect() jest prostok¹t, pod który funkcjata podstawia odczytane wspó³rzêdne; zostaj¹ one nastêpnie wpisane do Rejestrujako cztery niezale¿ne wartoœci:if(LCDPanel->Floating){TRect UndockedRect;if(GetWindowRect(LCDPanel->HostDockSite->Handle, &UndockedRect)){Registry->WriteInteger("Settings\\Display","UndockLeft",UndockedRect.Left);Registry->WriteInteger("Settings\\Display","UndockTop",UndockedRect.Top);Registry->WriteInteger("Settings\\Display","UndockRight",UndockedRect.Right);Registry->WriteInteger("Settings\\Display","UndockBottom",UndockedRect.Bottom);}}Nie mniejszym k³opotem jest tak¿e w³aœciwe wykorzystanie danych odczytanych zRejestru.Gdy podczas startu aplikacji kalkulatora konstruowany jest jejformularz g³Ã³wny, w jego konstruktorze wywo³ywana jest nastêpuj¹ca funkcja:Wydruk 3.41.Odczyt opcji aplikacji z Rejestruvoid __fastcall TMainForm::ReadAllValuesFromRegistry(){// Spróbuj odczytaæ ¿¹dane ustawienia z odpowiednich lokalizacji Rejestru// Przy pierwszym uruchomieniu lokalizacje te nie istniej¹, nale¿y wiêc// nie zmieniaæ ustawieñ domyœlnychstd::auto_ptr Registry(new TRegIniFile("SOFTWARE\\MiniCalculator"));// Za³aduj opcjeAutoSaveLayout= Registry->ReadBool("Options","AutoSaveLayout",AutoSaveLayout);AutoFit= Registry->ReadBool("Options","AutoFit",AutoFit);// Za³aduj ustawieniaReadSettingsFromRegistry(Registry);}Zwróæ uwagê, i¿ w charakterze wartoœci domyœlnej wystêpuje bie¿¹ca wartoœæzmiennej, zatem brak ¿¹danej lokalizacji w Rejestrze spowoduje, i¿ wartoœæuprzednio przypisana tej zmiennej nie zostanie zmieniona.Za³adowanie ustawieñ kalkulatora wykonywane jest przez funkcjêReadSettingsFromRegistry(); jej treœæ przedstawiamy na wydruku 3.42.Wydruk 3.42 [ Pobierz caÅ‚ość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • listy-do-eda.opx.pl