Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2018, 18:28   #1
Aleksandr94
Пользователь
 
Регистрация: 26.03.2018
Сообщений: 14
По умолчанию Как удалить из списка и Memo текст по id

У меня есть список где хранятся данные, что то вроде коллекции в java. Так же есть несколько кнопок. Одна из кнопок добавляет новые данные (id, text). Щелкнув несколько раз по кнопке можно добавить 9 значений. Остальные кнопки это цифры 1..9. Как сделать, так чтобы при щелчке по любой из кнопок удалялась значение по id вместе с текстом из списка, и за одно из Memo, так как все значение из списка там отображаются?
Вот весь код.
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Contnrs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  TText = class 
  private
   id : Integer;
   str : String;
  public
    constructor Create(_id:Integer; _str:String);
  end;
  TTextList=class(TObjectList)
  private
    function GetItems(index:integer):TText;
    procedure SetItems(index:integer; Value:TText);
  public
    property Items[index:integer]: TText read GetItems write SetItems; default;
  end;


var
  Form1: TForm1;
  TextList: TTextList;
  txt : TText;
  i:Integer = 0;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
TextList := TTextList.Create(true);
end;

{ TText }

constructor TText.Create(_id: Integer; _str:String);
begin
  id := _id;
  str := _str;
end;





procedure TForm1.Button1Click(Sender: TObject);
var j:Integer;
begin
Memo1.Lines.Clear;
if i <> 9
then
begin
i:=i+1;
txt := TText.Create(i,'[text id='+inttostr(i)+']Text[/text]');
TextList.Add(txt);

end;
for j:=0 to TextList.Count-1 do
begin
  Memo1.Lines.Add(TextList[j].str);
end;

end;

procedure TForm1.Button3Click(Sender: TObject);
var i:Integer;
begin
 i := 1; 
end;

procedure TForm1.Button4Click(Sender: TObject);
var i:Integer;
begin
 i := 2;
end;

procedure TForm1.Button9Click(Sender: TObject);
var i:Integer;
begin
 i := 3;
end;

procedure TForm1.Button5Click(Sender: TObject);
var i:Integer;
begin
 i := 4;
end;

procedure TForm1.Button6Click(Sender: TObject);
var i:Integer;
begin
 i := 5;
end;

procedure TForm1.Button7Click(Sender: TObject);
var i:Integer;
begin
 i := 6;
end;

procedure TForm1.Button8Click(Sender: TObject);
var i:Integer;
begin
 i := 7;
end;

procedure TForm1.Button11Click(Sender: TObject);
var i:Integer;
begin
 i := 8;
end;

procedure TForm1.Button10Click(Sender: TObject);
var i:Integer;
begin
 i := 9;
end;

function TTextList.GetItems(index: integer): TText;
begin
 Result := inherited Items[index] as TText;
end;

procedure TTextList.SetItems(index: integer; Value: TText);
begin
    inherited Items[index] := Value;
end;

end.
Aleksandr94 вне форума Ответить с цитированием
Старый 03.08.2018, 02:37   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от Aleksandr94 Посмотреть сообщение
У меня есть список где хранятся данные, что то вроде коллекции в java. Так же есть несколько кнопок. Одна из кнопок добавляет новые данные (id, text). Щелкнув несколько раз по кнопке можно добавить 9 значений. Остальные кнопки это цифры 1..9. Как сделать, так чтобы при щелчке по любой из кнопок удалялась значение по id вместе с текстом из списка, и за одно из Memo, так как все значение из списка там отображаются?
Ну вы и "наворотили"! А задачу программы озвучить можете? Дизайн формы показать можете? Объяснить для чего вы ввели класс TTextList можете?
northener вне форума Ответить с цитированием
Старый 03.08.2018, 07:03   #3
Aleksandr94
Пользователь
 
Регистрация: 26.03.2018
Сообщений: 14
По умолчанию

Код:
Ну вы и "наворотили"! А задачу программы озвучить можете? Дизайн формы показать можете? Объяснить для чего вы ввели класс TTextList можете?
Какую ещё задачу, я уже все написал если нужны исходники, то вот они. [ATTACH]Вложение удалено[/ATTACH]

Последний раз редактировалось Serge_Bliznykov; 03.08.2018 в 09:25.
Aleksandr94 вне форума Ответить с цитированием
Старый 03.08.2018, 09:25   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Aleksandr94 Посмотреть сообщение
Какую ещё задачу
Вам задание давали? Можете его огласить полностью?
вот это и есть та изначальная задача, которую Вы решаете.


Цитата:
Сообщение от Aleksandr94 Посмотреть сообщение
если нужны исходники, то вот они. test text.rar
1) у Вас Delphi заражена вирусом Induc. Нужно срочно вылечить! и удалить все заражённые exe
http://programmersforum.ru/showthread.php?t=60120

2) удалите из архива EXE файл и перевыложите архив ещё раз.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.08.2018, 09:39   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

итак у нас есть
Цитата:
Код:
 TTextList=class(TObjectList)
... 
TextList := TTextList.Create(true);
читаем что же мы все-таки сделали (from Help)
Цитата:
Allows TObjectList to free objects when they are deleted from the list or the list is destroyed.

Delphi syntax:

property OwnsObjects: Boolean;

C++ syntax:

__property bool OwnsObjects = {read=FOwnsObjects, write=FOwnsObjects, nodefault};

Description

OwnsObjects allows TObjectList to control the memory of its objects. If OwnsObjects is true (the default),

calling Delete or Remove frees the deleted object in addition to removing it from the list.
calling Clear frees all the objects in the list in addition to emptying the list.
calling the destructor frees all the objects in the list in addition to destroying the TObjectList itself.
assigning a new value to an index in Items frees the object that previously occupied that position in the list.

Even if OwnsObjects is true, the Extract method can be used to remove objects from the list without freeing them.
и понимаем что для окончательного и бесповоротного удаления достаточно просто удалить (не)нужное из оного списка.
--Как удалить из списка.
--Читаем там же (Справка/Help/F1) список методов (methods) выбираем подходящий и ...
--у меня проблемы с английским
--Архангельский. 100 компонент Delphi. Есть где-то на сайте. Главная. Книги
--Находим, читаем, выбираем, ...
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 03.08.2018 в 09:44.
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С,С++, как удалить элемент списка? Алексей_2012 Помощь студентам 5 11.06.2015 10:38
Как удалить элементы из списка? С++ Арий Помощь студентам 0 03.06.2015 17:04
Удалить из memo текст начиная от начального слова ,до конечного snakes Общие вопросы Delphi 5 02.11.2013 18:46
как удалить последнюю строку в Memo? annapro C++ Builder 3 04.06.2011 21:02
Как удалить совпадающие записи из списка? Ivan_RIV Microsoft Office Access 12 12.04.2010 18:55