ввод и вывод подстроки в lazarus

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

ввод и вывод подстроки в lazarus

Сообщение kudzey » 19.08.2014 13:21:30

здравствуйте, и зараннее спасибо за помощь.
а теперь к делу. у меня есть программа, которая выделяет строку из 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;     


но при попытке вернёть часть обратно оно либо заменяет собой всё строку, а не возвращает на своё место.
если кто знает что можно с этим сделать подскажите пожалуйсто.
kudzey
незнакомец
 
Сообщения: 1
Зарегистрирован: 19.08.2014 12:53:20

Re: ввод и вывод подстроки в lazarus

Сообщение Sharfik » 19.08.2014 21:06:28

Ну если ты дербанишь строку меняешь ее часть и потом хочешь чтобы отражалась сборная солянка, то запомни в переменную что было до и что менял. Потом подменишь через StringReplace
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 791
Зарегистрирован: 20.07.2013 01:04:30


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru