-1

複数のラベルのキャプションを保存して読み込む必要があります。これにTMemoを使用してみました:

procedure TForm1.Button1Click(Sender: TObject);    
begin    
  if SaveDialog1.Execute then
  begin    
     Memo1.Lines.SaveToFile(saveDialog1.FileName+'.txt');    
  end;    
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
  end;
end;

しかし、TMemo で Label1、Label2 などの特定のデータを設定および取得する方法がわかりません。

この考えに基づいて、後で他のコンポーネントを TEdit として使用します。

4

3 に答える 3

3

ここにメモが含まれていても、まったく意味がありません。おそらく、 を探しているでしょうTStringList

最初にラベルの内容を文字列リストに書き込む必要があります。

procedure TForm1.Button1Click(Sender: TObject);
var
  SL: TStringList;
begin
  if SaveDialog1.Execute then
  begin
    SL := TStringList.Create;
    try
      SL.Add(Edit1.Text);
      SL.Add(Edit2.Text);
      // Rest of edits
      SL.SaveToFile(SaveDialog1.FileName);
    finally
      SL.Free;
    end;
  end;
end;

読み返すには:

procedure TForm1.Button2Click(Sender: TObject);
var
  SL: TStringList;
begin
  if OpenDialog1.Execute then
  begin
    SL := TStringList.Create;
    try
      SL.LoadFromFile(OpenDialog1.FileName);
      Edit1.Text := SL[0];
      Edit2.Text := SL[1];
      // Same for rest of edits
    finally
      SL.Free;
    end;
  end;
end;

多くの編集コントロールに対してこれを行う必要がある場合は、おそらく間違ったユーザー インターフェイスを使用しています。達成しようとしていることを知らなければ、他の何かを提案することは困難です。

于 2015-04-08T02:50:50.307 に答える
0

要件に応じて、このコードを少し変更しました。

procedure TForm1.ButtonSaveClick(Sender: TObject);
var
  I: Integer;
  Strings: TStringList;
begin
  if SaveDialog1.Execute then
  begin
  Strings := TStringList.Create;
  try
    for I := 0 to ComponentCount - 1 do
      begin
      if Components[I] is TLabel then
        Strings.Values[Components[I].Name] := TLabel(Components[I]).Caption;
      if Components[I] is TEdit then
        Strings.Values[Components[I].Name] := TEdit(Components[I]).Text;
    end;
    Strings.SaveToFile(SaveDialog1.FileName);
  finally
    Strings.Free;
  end;
end;
end;

procedure TForm1.ButtonLoadClick(Sender: TObject);
var
  I: Integer;
  Control: TComponent;
  Strings: TStringList;
begin
  if OpenDialog1.Execute then
  begin
  Strings := TStringList.Create;
  try
    Strings.LoadFromFile(OpenDialog1.FileName);
    for I := 0 to Strings.Count - 1 do
    begin
      Control := FindComponent(Strings.Names[I]);
      if Control is TLabel then
        TLabel(Control).Caption := Strings.ValueFromIndex[I];
      if Control is TEdit then
        TEdit(Control).Text := Strings.ValueFromIndex[I];
    end;
  finally
    Strings.Free;
    end;
  end;
end;
于 2015-04-10T02:40:22.223 に答える