- Delphiartiklar, tips, forum, länksamling - 

      

START | DELPHI | LÄNKARGÄSTBOK 




 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: 1188
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; 

 
 
© Copyright 2005 - Staffan Berg
- Alla rättigheter förbehålles -