а теперь к делу. у меня есть программа, которая выделяет строку из listbox затем переносит её в edit для редактирования, и возвращает отредактированную часть обратно.
- Код: Выделить всё
- unit Unit1;
 {$mode objfpc}{$H+}
 interface
 uses
 Classes, SysUtils, FileUtil, SynHighlighterTeX, SynMemo, Forms, Controls,
 Graphics, Dialogs, StdCtrls, StrUtils;
 type
 { TForm1 }
 TForm1 = class(TForm)
 Button1: TButton;
 Button2: TButton;
 Button3: TButton;
 Button4: TButton;
 Edit1: TEdit;
 ListBox1: TListBox;
 OpenDialog1: TOpenDialog;
 SaveDialog1: TSaveDialog;
 procedure Button1Click(Sender: TObject);
 procedure Button2Click(Sender: TObject);
 procedure Button3Click(Sender: TObject);
 procedure Button4Click(Sender: TObject);
 procedure Edit1Change(Sender: TObject);
 procedure Edit1KeyPress(Sender: TObject; var Key: char);
 procedure FormCreate(Sender: TObject);
 procedure ListBox1Click(Sender: TObject);
 procedure SaveDialog1CanClose(Sender: TObject; var CanClose: boolean);
 procedure SaveDialog1FolderChange(Sender: TObject);
 private
 { private declarations }
 public
 { public declarations }
 end;
 var
 Form1: TForm1;
 implementation
 {$R *.lfm}
 { TForm1 }
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 if OpenDialog1.Execute then begin
 ListBox1.Items.LoadFromFile(OpenDialog1.FileName);
 end;
 end;
 procedure TForm1.Button2Click(Sender: TObject);
 begin
 if SaveDialog1.Execute then begin
 ListBox1.Items.SaveToFile(SaveDialog1.FileName);
 end;
 end;
 procedure TForm1.Button3Click(Sender: TObject);
 begin
 if MessageDlg('Удалить строку?', mtInformation,
 [mbOk,mbCancel],0) = mrOK
 then
 begin
 ListBox1.Items.delete(ListBox1.ItemIndex);
 ListBox1.Items.SaveToFile('FileName');
 end;
 end;
 procedure TForm1.Button4Click(Sender: TObject);
 begin
 if MessageDlg('Вставить строку выше выделенной?', mtInformation, [mbOk,mbCancel],0) = mrOK
 then
 begin
 ListBox1.Items.Insert(ListBox1.ItemIndex, Edit1.text);
 ListBox1.Items.SaveToFile('FileName');
 end;
 end;
 procedure TForm1.Edit1Change(Sender: TObject);
 begin
 end;
 procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
 begin
 with ListBox1 do
 if (key=#13)and(ItemIndex<>-1) then begin
 Items[ItemIndex]:=TEdit(Sender).Text;
 SetFocus();
 end;
 end;
 procedure TForm1.FormCreate(Sender: TObject);
 begin
 SaveDialog1.Filter:=
 'текстовые файлы|*.txt|Все файлы|*.*';
 end;
 procedure TForm1.ListBox1Click(Sender: TObject);
 begin
 Edit1.Text := ListBox1.Items.Strings[ListBox1.ItemIndex];
 end;
 procedure TForm1.SaveDialog1CanClose(Sender: TObject; var CanClose: boolean);
 begin
 end;
 procedure TForm1.SaveDialog1FolderChange(Sender: TObject);
 begin
 end;
 end.
вот код программы.
путём поиска в инете я нашол функцию которая может вставлять в edit часть строки
- Код: Выделить всё
- procedure TForm1.ListBox1Click(Sender: TObject);
 begin
 Edit1.Text := Trim(ExtractWord(1, ListBox1.Items
 [ListBox1.ItemIndex], [';',' ','.',',']));
 end;
но при попытке вернёть часть обратно оно либо заменяет собой всё строку, а не возвращает на своё место.
если кто знает что можно с этим сделать подскажите пожалуйсто.



