ДО ЕМИЛ СПЕШНО

3 отговора 189 прегледа
#1

ДО ЕМИЛ СПЕШНО

Една компонента TMEMO се мести така:
procedure TForm1.Memo1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
memo1.perform(WM_SYSCOMMAND,$F012,0);

end;
когато се премести TMEMO при следващо пускане на програмата как да помни там където е преместена. Предполагам че процедурата трябва да връща папраметри x и у .........

Отговор
в отговор на vasko #2

Re: ДО ЕМИЛ СПЕШНО

procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if Source is TMemo then
begin
TMemo(Source).Left := X;
TMemo(Source).Top := Y;
end;
end;

procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept := (Source is TMemo);
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Memo1.BeginDrag(True);
end;

Tova + izpolzvane na INI File za Save na Left i Top na Memo1

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

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

Re: ДО ЕМИЛ СПЕШНО

Aми мемото си има пропертита Top и Left.
Когато се стартира програмата компонента(мемото) ще се
появи там където е бил в дизайн тайм.
Ако трябва при след всяко стартиране да си помни
позицията то програмата трябва да записва някъде
Top и Left във файл (INI файл например) или в регистъра
и при следващо стартиране да ги чете от там.

Четенето и записа еможе да стават при събития на
формата където е мемото. Например на
FormShow - четене от файла,
На FormClose - запис за позицията

уффф.... хайде...


uses IniFiles;
....


procedure TForm1.FormShow(Sender: TObject);
var
MyIniFile: TIniFile;
begin
MyIniFile := TIniFile.Create(ExtractFilePath(ParamStr(0))+'myapp.ini');
memo1.Top:=MyIniFile.ReadInteger('MEMO1','TOP',0);
memo1.LEFT:=MyIniFile.ReadInteger('MEMO1','LEFT',0);
MyIniFile.Free;
end;


procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
MyIniFile: TIniFile;
begin
MyIniFile := TIniFile.Create(ExtractFilePath(ParamStr(0))+'myapp.ini');
MyIniFile.WriteInteger('MEMO1','TOP',memo1.Top);
MyIniFile.WriteInteger('MEMO1','LEFT',memo1.LEFT);
MyIniFile.Free;
end;




не знам колко е спешно - дано съм помогнал

Отговор
в отговор на vasko #4

Re: ДО ЕМИЛ СПЕШНО

OK! Много благодаря. Задължен съм ти! Аз съм нов във форума и никога не съм вярвял че хора помагат на други хора без да ги познават и то без заплащане!!!
ЧАО засега

Отговор