Forum
Grundkurs
»Introduktion
»Snabbguide
»Komponenter
»Händelser
»Strängar
»Räkna med Delphi »Egna
typer
»Selektion
»Iteration
»Menyer
»Funktioner
»Arraystrukturer
Tips & Tricks
»Nya tips
»Blandat
»Databaser
»Filer
»Forms
»Grafik
»Internet
»Komponenter
»Matematik
»Multimedia
»Objekt/ActiveX
»Skrivare
»Strängar
»System
»Mest lästa tips
Artiklar
»Delphi och ADO
»Bygga en DLL
»Skapa en enkel rapport
»Hantera registret
»Enheter, units
»Klassen TCanvas
»Använd LookUp Controls
Nya
tips
Lägg
till tips
Delphilänkar
Gästbok
|
|
|
|
Använd Microsoft Word stavningskontroll
|
Kategori: Objekt/ActiveX
Inlagt: 2005-10-01
Läst: 1275
Inlagt av: Staffan Berg
|
Beskrivning |
Här är ett exempel som demonstrerar hur du kan använda stavningskontollen i Microsoft Word i ditt Delphiprogram. Se vidare kommentarerna i koden (på tyska).
|
Kod |
uses Word2000; function TForm1.IsSatzZeichen(c: CHAR): Boolean; begin case c of '(': Result := True; ')': Result := True; ' ': Result := True; '.': Result := True; ',': Result := True; '!': Result := True; '?': Result := True; '-': Result := True; ':': Result := True; ';': Result := True; #$D: Result := True; #$A: Result := True; else Result := False; end; end; procedure TForm1.CheckText(Memo: TMemo); var i: Integer; MySelStart: INTEGER; Token: string ; Line: string ; ReplaceStr: string ; WordList: TStrings; varFalse: OleVariant; begin // Läuft Word? if EXE_Running('WINWORD.EXE', False) then begin if mrYes = MessageDlg('Word ist geöffnet.' + #13 + #10 + 'Für die Rechtschreibprüfung muss Word beendet werden.' + #13 + #10 + '' + #13 + #10 + 'Word abschiessen?', mtWarning, [mbYes, mbNo], 0) then begin KillTask('WINWORD.EXE'); end; end else begin // Startwerte i := 1; Line := Memo.Text; WordList := TStringList.Create; // Memo traviersieren und einzelne Wörter (Token) rausholen while not (Line[i] = #0) do begin Token := ''; // Tokem zusammenstellen while not IsSatzZeichen(Line[i]) do begin Token := Token + Line[i]; Inc(i); end; if Token <> '' then begin // Token speichern WordList.Add(Token); end; if IsSatzZeichen(Line[i]) then begin // "Token" speichern WordList.Add(Line[i]); Inc(i); end; end; // Verbindung zu Word aufbauen WordApp.Disconnect; WordDoc.Disconnect; WordApp.Connect; WordApp.Visible := False; // Leeres Dokument erzeugen WordDoc.ConnectTo(WordApp.Documents.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam)); MySelStart := 0; // WordList traversieren und auf Rechschreibung prüfen for i := 0 to WordList.Count - 1 do begin if not IsSatzzeichen(Wordlist[i][1]) then begin WordApp.Visible := False; // WordDokumentinhalt löschen WordDoc.Range.Delete(EmptyParam, EmptyParam); // Token in Word einfügen WordDoc.Range.Set_Text(WordList[i]); // Rechtschreibprüfung aufrufen WordApp.Visible := False; WordDoc.CheckSpelling; WordApp.Visible := False; // Resultat von der Rechtschreibprüfung holen und aufbereiten ReplaceStr := WordDoc.Range.Get_Text; WordApp.Visible := False; ReplaceStr := ReplaceString(ReplaceStr, #$D, ''); // Neues Wort in Memo einfügen Memo.SetFocus; Memo.SelStart := MySelStart; Memo.SelLength := Length(WordList[i]); Memo.SelText := ReplaceStr; WordList[i] := ReplaceStr; end; MySelStart := MySelStart + Length(WordList[i]); end; MessageDlg('Rechtschreibprüfung abgeschlossen.', mtInformation, [mbOK], 0); // Verbindung zu Word abbrechen und Word schliessen ohne zu speichern WordDoc.Disconnect; WordApp.Disconnect; varFalse := False; WordApp.Quit(varFalse); end; end; procedure TForm1.Button1Click(Sender: TObject); begin // Rechtschreibprüfung durchführen CheckText(Memo1); end;
|
|
|