Autor Beitrag
Jacer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 105

Windows 7, Vista, Ubuntu
HTML,CSS,PHP,Delphi 7
BeitragVerfasst: So 07.11.10 21:28 
So nun hab ich auch mal wieder ein Problem bei dem ich keine Lösung weiß.

Ich habe ein Memo-Feld in einem Fenster zum bearbeiten eines vorhandenen Eintrags in einer Datenbank.
Also wenn ich das Fenster öffne, werden alle Daten ausgelesen und in die entsprechenden Edits/Memos eingetragen.

Nun habe ich die Software auf einem anderen Rechner ausgeführt und folgendes Problem: Sobald ich in das Memo-Feld klicke, wird der Text gelöscht und manchmal ein Text eingefügt, der bei einem vorherhigen Bearbeiten-Vorgang verwendet wurde. Alles sehr seltsam. Für das Memo-FEld existiert kein OnClick Event oder derartiges. Auf anderen Systemen habe ich das Problem nicht.

Hoffe ihr könnt mir helfen...
mfg
jacer

PS: Es handelt sich um ein DBMemo, sollte vielleicht noch gesagt sein.

_________________
A look in the eyes often says more than a hundred words could ever express.
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: So 07.11.10 22:43 
Frage: Hat der andere Rechner ein anderes Betriebssystem?

Ich habe auch dauernd mit DBMemo ein Problem ähnlicher Natur. Ich habe einfach TDBMemo durch TMemo ersetzt. Das heißt dann mehr Verwaltungsaufwand, aber das Problem ist nicht mehr da. Du musst dann zuerst den Dateiinhalt des Feldes in das Memofeld übertragen und anschließend beim Verlassen des Memo-Feldes den aktuellen Inhalt wieder zurückübertragen.

Ich weiß, das ist ein Krücke, aber ich hatte oft solche Probleme mit Blob-Feldern. Danach nicht mehr.

Am Besten schreibst Du auch eine OnChange-Prozedur für das Memofeld. Siele Programmteile unten:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
procedure Form1.Memo1Enter(Sender : TObject);
begin
  Memo1.Text := TabelleXX.FieldByName(FeldXX).AsString;
  Memo1.Tag := 0;
end;

procedure Form1.Memo1Exit(Sender : TObject);
begin
  if Memo1.Tag<>0 then 
  begin
    TabelleXX.Edit;
    TabelleXX.FieldByName(FeldXX).AsString := Memo1.Text;
    TabelleXX.Post;
  end;
end;

procedure Form1.Memo1Change(Sender : TObject);
begin
  Memo1.Tag := 1;
end;

// TabelleXX ist Dein Tabellenbezeichner
// FeldXX der Bezeichner für das Datenfeld

// Memo1Change als OnChange-Prozedur
// Memo1Enter als OnEnter-Prozedur
// Memo1OnExit als OnExit-Prozedur


Vieleicht hilft Dir das. Wie gesagt, eine Krücke.

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.