[ Pobierz całość w formacie PDF ]
.btnSearchClick(Sender: TObject);{ Wywo³anie w¹tku wyszukuj¹cego }beginEnableSearchControls(False); // zablokuj kontrolkilbFiles.Clear; // wyczyœæ listê{ uruchom w¹tek wywo³uj¹cy }SearchThread := TSearchThread.Create(cbCaseSensitive.Checked,cbFileNamesOnly.Checked, cbRecurse.Checked, edtToken.Text,edtPathName.Text, edtFileSpec.Text);end;procedure TMainForm.edtTokenChange(Sender: TObject);beginbtnSearch.Enabled := not Running and (edtToken.Text '');end;procedure TMainForm.btnPathClick(Sender: TObject);{ Wybór lokalizacji plików }varShowDir: string;beginShowDir := edtPathName.Text;if SelectDirectory('Wybierz katalog.', '', ShowDir) thenedtPathName.Text := ShowDir;end;procedure TMainForm.lbFilesDrawItem(Control: TWinControl;Index: Integer; Rect: TRect; State: TOwnerDrawState);{ rysowanie specyficzne listy }varCurStr: string;beginwith lbFiles dobeginCurStr := Items.Strings[Index];Canvas.FillRect(Rect);if not cbFileNamesOnly.Checked then // jeœli nie tylko nazwy plików.{ je¿eli bie¿¹ca linia zawiera nazwê pliku }if (Pos('Plik ', CurStr) = 1) and(CurStr[Length(CurStr)] = ':') thenwith Canvas.Font dobegin// podkreœlone i na czerwonoStyle := [fsUnderline];Color := clRed;endelseRect.Left := Rect.Left + 15; // w przeciwnym razie wciêcieDrawText(Canvas.Handle, PChar(CurStr), Length(CurStr), Rect,DT_SINGLELINE);end;end;procedure TMainForm.Font1Click(Sender: TObject);{ Wybór czcionki }beginif FontDialog.ExecutethenlbFiles.Font := FontDialog.Font;end;{ Odczyt/zapis pliku.INI podczas tworzenia/zwalniania formularza }procedure TMainForm.FormCreate(Sender: TObject);beginReadIni;end;procedure TMainForm.FormDestroy(Sender: TObject);beginWriteIni;end;procedure TMainForm.btnPrintClick(Sender: TObject);{ u¿ytkownik wyra¿a chêæ drukowania }beginif MessageDlg('Czy wydrukowaæ wyniki poszukiwania??', mtConfirmation,[mbYes, mbNo], 0) = mrYesthenPrintStrings(lbFiles.Items);end;procedure TMainForm.btnCloseClick(Sender: TObject);begin// jeœli trwa przeszukiwanie, zakoñcz w¹tek przeszukuj¹cyif Running then SearchThread.Terminate// w przeciwnym razie zakoñcz aplikacjêelse Close;end;procedure TMainForm.lbFilesDblClick(Sender: TObject);{ obs³uga dwukrotnego klikniêcia linii zawieraj¹cej nazwê pliku }varProgramStr, FileStr: string;RetVal: THandle;begin{ jeœli klikniêto liniê zawieraj¹c¹ nazwê pliku.}if (Pos('Plik ', lbFiles.Items[lbFiles.ItemIndex]) = 1) thenbegin{ za³aduj edytor tekstowy zgodnie z plikiem INI - domyœlnie Notepad }ProgramStr := SrchIniFile.ReadString('Defaults', 'Editor', 'notepad');FileStr := lbFiles.Items[lbFiles.ItemIndex]; // wybrany plikFileStr := Copy(FileStr, 6, Length(FileStr) - 5); // usuñ prefiksif FileStr[Length(FileStr)] = ':'then // usuñ ":"DecStrLen(FileStr, 1);if cbRunFromAss.Checked then{ uruchom skojarzony program }RetVal := ShellExecute(Handle, 'open', PChar(FileStr), nil, nil,SW_SHOWNORMAL)else{ uruchom edytor }RetVal := ShellExecute(Handle, 'open', PChar(ProgramStr),PChar(FileStr), nil, SW_SHOWNORMAL);{ sprawdŸ poprawnoœæ wykonania }if RetVal < 32 then RaiseLastWin32Error;end;end;procedure TMainForm.FormResize(Sender: TObject);{ Obs³uga zdarzenia OnResize.Wyœrodkowuje kontrolki na formularzu }begin{ podziel pasek statusu na dwa panele w stosunku 1:2 }with StatusBar dobeginPanels[0].Width := Width div 3;Panels[1].Width := Width * 2 div 3;end;end;procedure TMainForm.btnPriorityClick(Sender: TObject);{ Wyœwietl formularz priorytetów }beginThreadPriWin.Show;end;procedure TMainForm.ReadIni;{ Odczytaj ustawienia z pliku INI }beginwith SrchIniFile dobeginedtPathName.Text := ReadString('Defaults', 'LastPath', 'C:\');edtFileSpec.Text := ReadString('Defaults', 'LastFileSpec', '*.*');edtToken.Text := ReadString('Defaults', 'LastToken', '');cbFileNamesOnly.Checked := ReadBool('Defaults', 'FNamesOnly', False);cbCaseSensitive.Checked := ReadBool('Defaults', 'CaseSens', False);cbRecurse.Checked := ReadBool('Defaults', 'Recurse', False);cbRunFromAss.Checked := ReadBool('Defaults', 'RunFromAss', False);Left := ReadInteger('Position', 'Left', Left);Top := ReadInteger('Position', 'Top', Top);Width := ReadInteger('Position', 'Width', Width);Height := ReadInteger('Position', 'Height', Height);end;end;procedure TMainForm.WriteIni;{ zapisz ustawienia w pliku INI }beginwith SrchIniFile dobeginWriteString('Defaults', 'LastPath', edtPathName.Text);WriteString('Defaults', 'LastFileSpec', edtFileSpec.Text);WriteString('Defaults', 'LastToken', edtToken.Text);WriteBool('Defaults', 'CaseSens', cbCaseSensitive.Checked);WriteBool('Defaults', 'FNamesOnly', cbFileNamesOnly.Checked);WriteBool('Defaults', 'Recurse', cbRecurse.Checked);WriteBool('Defaults', 'RunFromAss', cbRunFromAss.Checked);WriteInteger('Position', 'Left', Left);WriteInteger('Position', 'Top', Top);WriteInteger('Position', 'Width', Width);WriteInteger('Position', 'Height', Height);end;end;procedure TMainForm.Clear1Click(Sender: TObject);beginlbFiles.Items.Clear;end;procedure TMainForm.ApplicationEventsHint(Sender: TObject);{ Wyœwietlenie podpowiedzi na pasku statusu }beginStatusBar.Panels[0].Text := Application.Hint;end;end.Co najmniej dwa elementy powy¿szego wydruku zas³uguj¹ na szczególn¹ uwagê.Pierw­szym jest prosta procedura PrintStrings(), drukuj¹ca wszystkie zawarte nali­œcie ³añcuchy.Procedura ta wykorzystuje drukarkê jako plik tekstowy,przypisuj¹c j¹ wpierw do zmiennej Prn typu TextFile, a nastêpnie wykonuj¹cinstrukcjê Writeln dla ka¿dego ³añcucha na liœcie.Po wydrukowaniu ³añcuchówdrukarka jest zwalniana za pomoc¹ instrukcji CloseFile().Drugim interesuj¹cym elementem jest sposób uruchomienia programu skojarzonego zza­rejestrowanym typem plików; s³u¿y do tego funkcja API o nazwieShellExecute() [ Pobierz caÅ‚ość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • rurakamil.xlx.pl
  •