Hallo,
ich vermute, ich konnte das Problem selber lösen.
Mit wurde hier im Forum schon so oft geholfen und es könnte ja sein, dass irgendwann wieder irgend jemand auf dieses Problem stößt. Um "Leiden zu vermeiden" möchte ich deshalb meinen Thread nochmal "hervor holen" und berichten.
Vielleicht habe ich die Problematik ein wenig "unglücklich" beschrieben, weshalb mir niemand helfen konnte;
Deshalb hier nochmal:
Wenn ich in das "Haupttextfeld" (ein "TDBMemo"-Element) den Inhalt der Zwischenablage mit dem Menü, das die rechte Maustaste zur Verfügung stellt, einfüge, dann kann ich jeden Text, egal ob dieser Text "von außen" (damit meine ich ein Webseite oder ein Word-Dokument) oder von "innen" (damit meine ich einen beliebigen Text, der sich "in" einer Textdarstellung meines Programms befindet und den ich per "Strg-C oder per Mausmenü in die Zwischenablage gelegt habe) kommt, in dieses Feld einfügen und er wird auch in die Datenbank abgelegt (edit-post). Also Alles Bestens!
Wenn ich aber versuche, einen Text der Zwischenablage mit Strg-V in das TDBMemo-Feld einzufügen, dann macht es einen großen Unterschied, ob der Text von "Innen" oder von "Außen" kommt:
Kommt er von "Innen", dann funktioniert alles problemlos: Sowohl das "Mausmenü" als auch "Strg-V".
Kommt er von "Außen", dann funktioniert nur noch das Menü, das die rechte Maustaste zur Verfügung stellt, ganz normal.
Aber es kommt zu einem eigenartigen Verhalten, wenn ich per "Strg-V" versuche den Text einzufügen: Zunächst wird der Inhalt der Zwischenablage ganz normal in den Text eingefügt, er verschwindet aber sofort wieder, wenn ich in das Textfeld etwas schreiben will oder auch nur mit der Maus in das Feld klicke und auch bei sonstigen kleinsten Aktionen innerhalb des Programms.
Das Problem wird durch die gekennzeichnete zwei Code-Zeilen gelöst - und ich hoffe, meine aktuelle Euphorie erhält nicht noch einen Dämpfer:
Code: Alles auswählen
var
strPuffer: string;
...
...
if Key = Ord('V') then
begin
strPuffer := Clipboard.AsText; // < ------
Clipboard.AsText := strPuffer; // < ------
Qtext.Edit;
if DBMemoText.Focused = True then Form1.DBMemoText.PasteFromClipboard;
if DBMemoHinweis.Focused = True then DBMemoHinweis.PasteFromClipboard;
if DBEditTitel.Focused = True then DBEditTitel.PasteFromClipBoard;
Qtext.Post;
// Qtext.ApplyUpdates; // brachte nichts!
// DBMemotext.Refresh; // brachte auch nichts!
end;
Vielleicht - so jedenfalls meine Theorie - hat der Inhalt des Clipboards, wenn er "von außen" kommt eine Formatierung, die die Datenbank "nicht mag", so dass das Abspeichern verweigert wird. Durch die genannten Zeilen werden diese diese "unerlaubten Zeichen" (??) eliminiert.
Eine schöne Woche!
Aliobaba
... ein herrlicher Tag für Lazarus!!: Raus kann man momentan nicht wegen des Blitzeises
