moga li pod DELPHI...

23 отговора 1116 прегледа
#1

moga li pod DELPHI...

kak moje da s enapravi nesto koeto predi izlizane ot programata da zapise vav fail tekustite stoinosti na vsicki poleta (Edit, Button, Memo....) i voobste cialoto tekusto sastoianie, i sped nanovo puskane na programata d ago proceta obratno?

estestvenno moga racno da zapisa i vazstanova pootdelni vsixki tezi parametri no tova nee udobno?
bi moglo da stane ako znam oblastta v pametta kadeot s epazat tezi danni i da ia zapisa vav fail! ama zvucio mnogo samnitelno....
niakoi znae li nesto?

Отговор
в отговор на CALL-151 #2

Re: moga li pod DELPHI...

standartnia na4in za tova e da polzvash baza danni - ORACLE, MySQL ...


Отговор
в отговор на tester #3

Re: moga li pod DELPHI...

stava vapros ce nekade v nekoia forma e imalo nekakvo pole "edit" i tam niakoi e e napisal nesto. vaprosa e sled kato izleze ot programata i ia startira otnoto tam vse oste da stoi tova koeto e napisal.

Отговор
в отговор на CALL-151 #4

уф!


bi moglo da stane ako znam oblastta v pametta kadeot s epazat tezi danni i da ia zapisa vav fail! ama zvucio mnogo samnitelno....


Определено е МНОГО съмнително, да не говорим за надеждност. Не съм чак толкова навътре с подробностите от ниско ниво, но ако се ползват API-та от рода на GlobalAlloc (за което ще ти се наложи да изчетеш маса от сорсовете на Delphi за ползваните там wrapper функции) -- направо забрави.

Най-добре ще бъде ако си имаш някакви структури за състояние, които да се ъпдейтват при самата промяна на въпросните edit-и и при изход ще можеш да си ги записваш на каквото си щеш, даже и в база данни :)

НАЙ-добрия клуб ТУК
Отговор
в отговор на CALL-151 #5

Re: moga li pod DELPHI...

Imashe edno wreme edni komponenti koito pri izlizane si zapiswaha sastoianiata i pri start pak si gi chetat.

Obache ne se seshtam koi sa.
Maiche biaha AHMTritonTools?

Отговор
в отговор на CALL-151 #6

Re: moga li pod DELPHI...

Mojesh da gi zapisvash v niakakva malka baza danni, a ako ne sa mnogo mojesh da gi zapishesh v Windows Registri, i ottam da gi pro4etesh pri startiraneto.

Отговор
в отговор на CALL-151 #7

Re: moga li pod DELPHI...

zapishi si gi v ini fail

Отговор
в отговор на dd #8

Re: moga li pod DELPHI...

az tocno i tova ste naprava nakraia! ste gi zapisa v .ini fail, prosto ideata mi bese da ne izbroiavam vsicko pootdelno, zastoto ste e mnogo, no iavno taka ste trebva da naprava!

Отговор
в отговор на CALL-151 #9

Re: moga li pod DELPHI...

в RXLib има компоненти FormStorage i FroemPlacement - май ще свършат работа.

Отговор
в отговор на CALL-151 #10

Re: moga li pod DELPHI...

Ами недей да ги изброяваш! Врътни един цикъл по всички компоненти във формата и за всеки проверявай дали не е от тип, който подлежи на записване (едва ли искаш да запишеш и Label-ите). Ако пасне някой, записваш му съответната характеристика (Text, Selected или каквото ти трябва).
Между другото, същата техника се използва от компоненти за (псевдо)автоматичен превод на форма - различни езикови файлове с етикетите; компонентата го чете и блъска по съдържанието на формата.

На света има три вида хора: които могат да броят и които не могат.
Отговор
в отговор на CALL-151 #11

Re: moga li pod DELPHI... lesno reshenie

Ima gotow komponent(ama ne e free) - pri nego si okazwash koi komponenti i koi tehni property da se zapiswat - raboti bezpogreshno - az go polzwam i za sahraniawane na sastoianieto na formata - pusni edna belezka s mail (w moia profil) - ama mislia 4e paketa e dosta goliam - no ste ti go pratia

---
IN VINO VERITAS!
Отговор
в отговор на CALL-151 #12

имай си едно наум с .ini файловете:

Май имат някакво ограничение откъм размер. Веднъж си имах главоболия. Освен това работата с тях не е чак толкова по-лесна, отколкото да си направиш собствен config-файл.

НАЙ-добрия клуб ТУК
Отговор
в отговор на Mandor #13

Re: moga li pod DELPHI...

ami, tova da varta v cikal vsicko e idealno! samoce kak da go naprava?
az imam edna kupcina ot imena edit1, edit2... edit100... primerno ako ne sam gi prekrastil
sastestvuva li niakakvo obsto edinno opisane na vsicko v edna forma?
to az ne sam mnogo navatre s Delphi-to

Отговор
в отговор на PhantomAS #14

Re: moga li pod DELPHI... lesno reshenie

Опитай това.

unit Class1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Panel1: TPanel;
ListBox1: TListBox;
GroupBox1: TGroupBox;
ListBox3: TListBox;
Edit1: TEdit;
ComboBox1: TComboBox;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}
Const
FileName='OpiComp.txt';
procedure TForm1.FormCreate(Sender: TObject);
var
I:integer;
AStr,BStr,CStr:String;
Source: TComponent;
begin
if FileExists(FileName) then
with ListBox3.Items do
begin
LoadFromFile(FileName);
for I:=0 to Count-1 do
begin
AStr:=Strings;
BStr:=Copy(AStr,1,Pos(#9,AStr)-1);
AStr:=Copy(AStr,Pos(#9,AStr)+1,255);
CStr:=Copy(AStr,1,Pos(#9,AStr)-1);
AStr:=Copy(AStr,Pos(#9,AStr)+1,255);
if BStr='TEdit' then
begin
Source := FindComponent(CStr);
(Source as TEdit).Text:=AStr;
end;
if BStr='TComboBox' then
begin
Source := FindComponent(CStr);
(Source as TComboBox).Text:=AStr;
end;
end;
end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
procedure add(Sender:TObject);
begin

with ListBox3.Items do
if Sender.ClassNameIs('TEdit') then
Add((Sender as TEdit).ClassName+#9+
(Sender as TEdit).Name+#9+
(Sender as TEdit).Text)
else
if Sender.ClassNameIs('TComboBox') then
Add((Sender as TComboBox).ClassName+#9+
(Sender as TComboBox).Name+#9+
(Sender as TComboBox).Text);
end;

var
I:integer;
begin
ListBox3.Clear;
for I:=0 to ComponentCount-1 do
Add(Components);
ListBox3.Items.SaveToFile(FileName);
end;

end.



object Form1: TForm1
Left = 192
Top = 107
Width = 544
Height = 375
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnClose = FormClose
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Panel1: TPanel
Left = 144
Top = 152
Width = 185
Height = 177
Caption = 'Panel1'
TabOrder = 1
object ListBox1: TListBox
Left = 32
Top = 64
Width = 121
Height = 97
ItemHeight = 13
TabOrder = 0
end
object Edit1: TEdit
Left = 24
Top = 24
Width = 121
Height = 21
TabOrder = 1
Text = 'Edit1'
end
end
object GroupBox1: TGroupBox
Left = 344
Top = 24
Width = 185
Height = 201
Caption = 'GroupBox1'
TabOrder = 0
object ComboBox1: TComboBox
Left = 24
Top = 24
Width = 145
Height = 21
ItemHeight = 13
TabOrder = 0
Text = 'ComboBox1'
end
end
object ListBox3: TListBox
Left = 40
Top = 16
Width = 201
Height = 121
ItemHeight = 13
TabOrder = 2
end
end

Редактирано от TRN на

Отговор
в отговор на Xypodilec #15

Re: имай си едно наум с .ini файловете:

мда 64Kb макс.

Отговор
в отговор на TRN #16

Re: moga li pod DELPHI... lesno reshenie

Maj ne me razbra - az imam komponent pri towa absolutno uniwersalen - zaka4ash go za formata - popalwash koi controli i koi tehni property da se zapiswat i wsi4ko e 6.
Mezdu drugoto paketa se kazwa RXlib - [линк] - ako ne me laze pametta

---
IN VINO VERITAS!
Отговор
в отговор на CALL-151 #17

eто така:

Сложи си един StringGrid и пусни ей това:


procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
ctrl: TControl;
begin
StringGrid1.RowCount := ControlCount + 1;
StringGrid1.ColCount := 4;
for i := 0 to ControlCount-1 do
begin
ctrl := Controls[ i];
StringGrid1.Cells[1, i+1] := ctrl.Name;
StringGrid1.Cells[2, i+1] := ctrl.ClassName;
StringGrid1.Cells[3, i+1] := ctrl.ClassName;
//..... i t.n.
end;
end;


...

НАЙ-добрия клуб ТУК
Отговор
в отговор на Xypodilec #18

Re: eто така:

taka stana! mersi!
znaeh si az c enemoje da nema nacin visicko da e dostapno kato niakakav masiv :-)

Отговор
в отговор на CALL-151 #19

Re: moga li pod DELPHI...

samo RxLib shte ti swyrshi rabota
[линк]
component FormStorage

-------------------------
towa e signatura
Отговор
в отговор на CALL-151 #20

Re: moga li pod DELPHI...

Ако въпросното поле не е поле от клас TDBEdit, начина за това е в тригер OnClose на формата да се напише код, който да обхожда желаните интерфейсни обекти и да записва във външен файл (TXT, DBF, DB ...) стойностите на свойствата им Text или Value.

Всеки може да опикае пода. Бъдете мъже и окендзайте тавана!
Отговор