Lazarus: TCalcEdit TFilenameEdit Problem

jrx

Mitglied
Hallo,

ich habe in einem Formular TCalcEdit und TFilenameEdit und noch eniges mehr.
Wenn ich aber zB . ein TFilenameEdit aufrufe verschwinden die Eingaben in den andere Feldern wieder.
Code:
procedure Tbomform.OVRCalcEditChange(Sender: TObject);
begin
  one4calc_data.o[one4calc_data.GetDataPos('overhead')].Text := ovrCalcedit.Text;    
end;

procedure Tbomform.picBtnClick(Sender: TObject);
begin
  if opendialog1.execute then picturefilename.Text :=opendialog1.FileName ;                         
end;

procedure Tbomform.picturefilenameChange(Sender: TObject);
begin
  one4calc_data.o[one4calc_data.GetDataPos('picture')].Text := picturefilename.Text ; 
end;
Das passiert auch, wenn ich ansetelle eines TFilenameEDit einen normaes Edit nehme und über einen Button einen Standarddateimenü aufrufe.

Es leeren sich auch TMemos. Ich rätsele mal wieder herum.

Vielleicht habe ich auch einen Denkfehler beim one4calc_data.o[...

...ich habe in einem unit ein statisches Array mit TStringlists als Datenspeicher.
Bei manchen Feldern in meinem Hauptprogramm nehme ich dann nur die erste Zeile.

Code:
unit one4calc_data; 
 {$mode objfpc}{$H+}
interface
uses Classes, SysUtils ;
const MaxTagList = 64;
const Taglist : Array [1..MaxTagList] of String = 
( 'p$','s$','curse',......');

type One4CalcFile = Array[1..MaxTagList] of TStringList;
var  o : One4CalcFile;

procedure LoadFromFile ( s : String) ;    
procedure WriteToFile ( s : String) ; 
function GetDataPos( tag : String): Integer;             

 
Es folgen die ganzen Codezeilen für die die Functionen usw.
als letztes habe ich noch das Array  anzulegen.

var i : Integer; 
initialization
  for i := 1 to MAxTagList do o[i] := TStringList.Create;
  o[64].Text :='init done!';
	
finalization
   for i := 1 to MAxTagList do o[i].free;        
 
end.

In meiner Welt will ich nun aus dem aufrufenden Programmteil in meinen Feldern lesen und schreiben.
Wenn ich eine Datei geladen habe, werden mir die Felder auch in dem aufrufenden Unit angezeigt, wenn ich alles einlese.
Ändern und speichern geht auch bei den Memofeldern. Und dann kommt's zum o.g. Verschwinden.

Kann mir bitte jemand mal ein Tip geben?
Ich habe das Gefühl, daß ich mit meinen Datencontainer "o" was falsch gemacht habe. Andererseits geht's ja auch bei "normalen" Memos und der Fehler liegt woanders.


Vielen Dank.
jrx
 

jrx

Mitglied
Ich habe den Fehler gefunden.
Das Unit mit dem "O" habe zweimal geladen, 1. mit dem Hauptprogramm und dann 2. noch aus dem Formular.
Ich habs aus dem Hauptprogramm rausgeschmissen und siehe da, es geht.
jrx
 

Neue Beiträge