Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.05.2014, 19:51
freya_pc freya_pc вне форума
Прохожий
 
Регистрация: 10.05.2014
Сообщения: 14
Версия Delphi: Delphi 7)
Репутация: 10
По умолчанию Delphi 7 CheckListBox & Memo

Добрый день, такая ситуация: Есть несколько чеклистбоксов и в зависимости от того, где стоит галка, нужно добавить определенный текст в мемо.
У меня получается только для одного активного, а если выбираю несколько (чеклистбоксов), то все обновляется.
Просто накидайте идеи, а то стандартным кодом не выходит
Код:
 Memo1.Clear;
  begin
    if CheckListBox1.selected[1] then
      Memo1.Text:='бла бла бла';
end
Ответить с цитированием
  #2  
Старый 10.05.2014, 20:02
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Код:
var
i: integer;
begin
Memo1.Clear;
for i:= 0 to CheckListBox1.Count-1 do 
    if CheckListBox1.selected[i] then Memo1.Lines.Add('бла бла бла');
end;
Ответить с цитированием
  #3  
Старый 10.05.2014, 20:16
freya_pc freya_pc вне форума
Прохожий
 
Регистрация: 10.05.2014
Сообщения: 14
Версия Delphi: Delphi 7)
Репутация: 10
По умолчанию

В общем, да, непонятно я выразила мысль, в общем, в зависимости от того какие чекбоксы выбраны, добавляем разный текст, в конце, в мемо должен выйти список. а так если делать, то он один и тот же будет текст добавлять.
Ответить с цитированием
  #4  
Старый 10.05.2014, 20:19
freya_pc freya_pc вне форума
Прохожий
 
Регистрация: 10.05.2014
Сообщения: 14
Версия Delphi: Delphi 7)
Репутация: 10
По умолчанию

И еще,нумерация в чекЛистБоксе с 0, а в Мемо с 1??
Ответить с цитированием
  #5  
Старый 10.05.2014, 20:23
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от freya_pc
И еще,нумерация в чекЛистБоксе с 0, а в Мемо с 1??
Нет, в Мемо нумерация тоже с нуля. На вскидку я даже и не вспомню где нумерация не с нуля, разве что нумерация строк и столбцов в Excel-е с единицы.
Ответить с цитированием
  #6  
Старый 10.05.2014, 20:29
freya_pc freya_pc вне форума
Прохожий
 
Регистрация: 10.05.2014
Сообщения: 14
Версия Delphi: Delphi 7)
Репутация: 10
По умолчанию

Код:
 begin
    if CheckListBox1.selected[1] then Form2.Memo1.Lines.Add('***');
    if CheckListBox1.selected[2] then Form2.Memo1.Lines.Add('ййй);
  end;
Ответить с цитированием
  #7  
Старый 10.05.2014, 20:37
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от freya_pc
...
Код:
const
txt: array[0..4] of string = ('первая','вторая','третья','четвёртая','итд.');
...
var
i: integer;
begin
Memo1.Clear;
for i:= 0 to High(txt) {CheckListBox1.Count-1} do 
    if CheckListBox1.selected[i] then Memo1.Lines.Add(txt[i]);
end;
Ответить с цитированием
  #8  
Старый 10.05.2014, 20:38
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от freya_pc
Код:
 begin
    if CheckListBox1.selected[1] then Form2.Memo1.Lines.Add('***');
    if CheckListBox1.selected[2] then Form2.Memo1.Lines.Add('ййй);
  end;
Не пойму почему здесь selected. Может всё же Checked?
Ответить с цитированием
  #9  
Старый 10.05.2014, 20:48
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Упс, я тоже этого не заметил, в смысле про Checked
Ответить с цитированием
  #10  
Старый 10.05.2014, 20:51
freya_pc freya_pc вне форума
Прохожий
 
Регистрация: 10.05.2014
Сообщения: 14
Версия Delphi: Delphi 7)
Репутация: 10
По умолчанию

Спасибо,товарищи, с чекед работает как надо... мда, с чего это мне взбрело селектед писать) может еще кто-нибудь заодно посоветует, как авто нумерацию строк сделать в Мемо? есть там какое-нибудь спец. свойство?
Ответить с цитированием
  #11  
Старый 10.05.2014, 21:00
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Вроде нет, но можно псевдо
Код:
var
i: integer;
begin
for i:= 0 to Memo1.Lines.Count-1 do
Memo1.Lines[i]:= IntToStr(i+1) + '. ' + Memo1.Lines[i];
end;
Ответить с цитированием
  #12  
Старый 10.05.2014, 21:46
freya_pc freya_pc вне форума
Прохожий
 
Регистрация: 10.05.2014
Сообщения: 14
Версия Delphi: Delphi 7)
Репутация: 10
По умолчанию

В общем, не работает, не пойму в чем причина. Мемо вообще пустое остается. В чем беда может быть?
Ответить с цитированием
  #13  
Старый 10.05.2014, 21:52
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от freya_pc
В общем, не работает, не пойму в чем причина. Мемо вообще пустое остается. В чем беда может быть?
Код который привёл Alegun на пустом Мемо использовать не нужно, его нужно применять уже после того как Мемо будет заполнено в соответствии с CheckListBox-ами.
Ответить с цитированием
  #14  
Старый 11.05.2014, 11:09
Тролль Тролль вне форума
Заблокирован
 
Регистрация: 07.05.2014
Сообщения: 11
Версия Delphi: 7, Kylix
Репутация: -1385
По умолчанию

Код:
unit Unit1;

interface

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

type
  tmyclass=class
  private
    Ftext: string;
    procedure Settext(const Value: string);
  public
    property text:string read Ftext write Settext;
  end;


type
  TForm1 = class(TForm)
    CheckListBox1: TCheckListBox;
    Memo1: TMemo;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure CheckListBox1ClickCheck(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  list:tstringlist;

implementation

{$R *.dfm}

{ tmyclass }

procedure tmyclass.Settext(const Value: string);
begin
  Ftext := Value;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  mc:tmyclass;
begin
  list:=tstringlist.Create;
  mc:=tmyclass.create;
  
  {этим самым мы здесь и далее по коду создаем объекты, которые занимает место в памяти.
  Delphi не удаляет их в процессе выполнения работы, поэтому как только они станут бесполезны, мы должны обязательно
  удалить их самостоятельно,чтобы не вызвать утечку памяти.}

  mc.text:='Тестовая строка 1';
  list.Addobject(mc.text,pointer(mc));

  mc:=tmyclass.create;
  mc.text:='Тестовая строка 2';
  list.Addobject(mc.text,pointer(mc));

  mc:=tmyclass.create;
  mc.text:='Тестовая строка 3';
  list.Addobject(mc.text,pointer(mc));

  { Только для теста.
  mc.text:='Тестовая строка 4'; // добавили просто строку, чтобы проверить, будет ли access violation.
  list.Add(mc.text);
   }

  checklistbox1.Items.Assign(list);

end;

procedure TForm1.FormDestroy(Sender: TObject);
var
  i:integer;
begin
  if assigned(list) then
  begin
    for i:=0 to list.Count-1 do
    list.Objects[i].Free;
    list.destroy;
  end;
end;

procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
var
  lst:tstrings;
  i:integer;
begin
  i:=checklistbox1.ItemIndex;
  if checklistbox1.Checked[i] then { дополнительная проверка на assigned (как в listview - selected) не нужна, т.к. если не будет
  элементов, не по чему будет кликать}
  begin
    if checklistbox1.items.objects[i] is tmyclass then // проверяем, можно ли привести объект в списке к tmyclass.
    memo1.Lines.Add(tmyclass(checklistbox1.items.objects[i]).text);
  end;
end;

end.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:17.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter