Jump to content

Formdaki Herhangi Bir Nesnenin Bütün Özelliklerini Saklama


pro_imaj
 Share

Recommended Posts

Merhaba Arkadaşlar;

 

Örnek Olarak;

 

Formda 1 Adet Edit var diyelim.

 

Bu editin bütün özelliklerini kaydetmek istiyorum sonrasında da form create edilirken bu özelliklere göre çağırmak istiyorum.

 

Yani kullanıcı Edit'in yazı rengini, boyutunu veya ekrandaki konumu veya DBedit ise datasource bilgisini gibi özelliklerini değiştirebileceği bir proje düşünüyorum. Sonrasında kullanıcı kaydet dediği zaman artık o nesne son ayarlanan özelliklerle ekrana gelsin istiyorum. Bunu nasıl yapabilirim.

 

Delphi tarafında yıllar önce bir componenetle tek tuşla bunu yapabiliyordum fakat bir türlü ulaşamadım.

 

Yardımlarınız için teşekkürler.

İyi çalışmalar.

Link to comment
Share on other sites

Merhabalar

 

Componentlerin propertieslerini Stream ile saklayabilirsiniz.

 

Örneğin:

procedure TMainForm.UniButton1Click(Sender: TObject);
var
  Str: TFileStream;
begin
  UniButton2.Caption := 'a';
  UniButton1.Width := 150;

  str := TFileStream.Create(UniServerModule.FilesFolder+'Properties.txt', fmOpenReadWrite+fmCreate);
  try
    str.WriteComponent(UniButton2);
    str.WriteComponent(UniButton1);
  finally
    str.Free;
  end;
end;

formun create eventinde ya da herhangi bir eventte geri çağırabilirsiniz.

procedure TMainForm.UniFormCreate(Sender: TObject);
var
  Str: TFileStream;
begin

 if FileExists(UniServerModule.FilesFolder+'Properties.txt') then
 begin
    str := TFileStream.Create(UniServerModule.FilesFolder+'Properties.txt', fmOpenRead);
    try
      str.ReadComponent(UniButton2);
      str.ReadComponent(UniButton1);
    finally
      str.Free;
    end;
  end
  else
    ShowMessage('Save First!');
end;



procedure TMainForm.UniButton3Click(Sender: TObject);
var
  Str: TFileStream;
begin

  if FileExists(UniServerModule.FilesFolder+'Properties.txt') then
  begin
    str := TFileStream.Create(UniServerModule.FilesFolder+'Properties.txt', fmOpenRead);
    try
      str.ReadComponent(UniButton2);
      str.ReadComponent(UniButton1);
    finally
      str.Free;
    end;
  end
  else
    ShowMessage('Save First!');
end;


ComponentPropertiesChange.rar

Link to comment
Share on other sites

  • 4 weeks later...

Merhaba @BugraYener

 

Öncelikle çok teşekkür ederim güzel bir çalışma yapmışsınız.

 

Şimdi uygulamaya çalışıyorumda, siz Componentleri sabit yazmışsınız yani Button1 ve Button2 şeklinde, Ben bu componentleri Runtme da oluşturuyorum. UniDraggable örneğindeki gibi. Kullanıcının oluşturduğu componentleri nasıl bulup kaydedeceğim. FindComponent komutuyla uğraştım fakat invalid class typeclass hatası alıyorum.

 

Yardımlarınız için teşekkürler.

İyi çalışmalar.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...