Измения в ListBox
От: Duke_Nukem Украина  
Дата: 10.12.04 11:03
Оценка:
Всем привет.
Помогите решить задачку:
Есть ListBox, заполненный значениями, при двойном клике вызывается форма редактирования значения выделенной строки из ListBox. Как отследить были ли изменения в ListBox или была ли измененена строка?
Заранее спасибо.
Re: Измения в ListBox
От: DarkMaster Украина http://www.bdslib.at.ua
Дата: 10.12.04 13:21
Оценка:
Здравствуйте, Duke_Nukem, Вы писали:

D_N>Есть ListBox, заполненный значениями, при двойном клике вызывается форма редактирования значения выделенной строки из ListBox. Как отследить были ли изменения в ListBox или была ли измененена строка?


Если я все правильно понял — что мешает сравнить строку из ЛистБокса со строкой из формы редактирования перед сохранением изменений?
WBR, Dmitry Beloshistov AKA [-=BDS=-]
Re[2]: Измения в ListBox
От: Duke_Nukem Украина  
Дата: 10.12.04 13:30
Оценка:
Здравствуйте, DarkMaster, Вы писали:

DM>Если я все правильно понял — что мешает сравнить строку из ЛистБокса со строкой из формы редактирования перед сохранением изменений?


Может я не до конца объяснил, изменения сначала вносятся в ListBox при помощи формы редактирования, а уж затем сохраняются в базе. Отсюда и вопрос, чтобы одновлять не все записи из ListBox, а только измененные.
Re: Измения в ListBox
От: Alex.Che  
Дата: 10.12.04 13:31
Оценка:
Привет, Duke_Nukem!
Вы пишешь 10 декабря 2004:

DN> Всем привет.

DN> Помогите решить задачку:
DN> Есть ListBox, заполненный значениями, при двойном клике вызывается форма редактирования значения выделенной строки из ListBox.
DN> Как отследить были ли изменения в ListBox или была ли измененена строка?

RTFM TStringList.OnChange

DN> Заранее спасибо.


Заранее, наливай!

--
With best regards, Alex Cherednichenko.
Posted via RSDN NNTP Server 1.9 delta
Re[2]: Измения в ListBox
От: kavlad Россия http://www.wavesoft.ru
Дата: 10.12.04 13:48
Оценка:
Здравствуйте, Alex.Che, Вы писали:

AC>RTFM TStringList.OnChange


Я не понял при чем тут StringList?

constructor TCustomListBox.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
    ...
  FItems := TListBoxStrings.Create;
  ...
end;

  TListBoxStrings = class(TStrings)
  private
    ListBox: TCustomListBox;
  protected
    procedure Put(Index: Integer; const S: string); override;
    function Get(Index: Integer): string; override;
    function GetCount: Integer; override;
    function GetObject(Index: Integer): TObject; override;
    procedure PutObject(Index: Integer; AObject: TObject); override;
    procedure SetUpdateState(Updating: Boolean); override;
  public
    function Add(const S: string): Integer; override;
    procedure Clear; override;
    procedure Delete(Index: Integer); override;
    procedure Exchange(Index1, Index2: Integer); override;
    function IndexOf(const S: string): Integer; override;
    procedure Insert(Index: Integer; const S: string); override;
    procedure Move(CurIndex, NewIndex: Integer); override;
  end;


Нету там OnChange
... По ушам лупит начальство
Re[3]: Измения в ListBox
От: Leonid Troyanovsky  
Дата: 10.12.04 15:36
Оценка:
Здравствуйте, kavlad, Вы писали:

AC>>RTFM TStringList.OnChange


K>Я не понял при чем тут StringList?


Возможно, что пропущено некоторое звено,
например, ListBox д.б. OwnerDraw*.
Тогда, вроде, все встает на места.
--
С уважением, LVT
Re[3]: Измения в ListBox
От: wildwind Россия  
Дата: 10.12.04 16:05
Оценка: +1
Здравствуйте, Duke_Nukem, Вы писали:

D_N>Может я не до конца объяснил, изменения сначала вносятся в ListBox при помощи формы редактирования, а уж затем сохраняются в базе. Отсюда и вопрос, чтобы одновлять не все записи из ListBox, а только измененные.


Признак того, что строка изменена, можно сохранять в ListBox.Items.Objects.
Re[4]: Измения в ListBox
От: Dimonka Верблюд  
Дата: 10.12.04 16:17
Оценка: +1
Здравствуйте, Leonid Troyanovsky, Вы писали:

LT> Возможно, что пропущено некоторое звено,

LT> например, ListBox д.б. OwnerDraw*.
LT> Тогда, вроде, все встает на места.

Да по-моему много чего пропущено.. Если нужен трэкинг изменений, то никакой прямой связи между базой данных, формой редактирования этих данных и собственно лист-боксом быть не должно..

Как насчёт того, чтобы сделать класс, отвечающий за хранение и изменение этих самых строк? Потом же в 100 раз легче будет думать о третьей форме, которая перетасовывает этот лист-бокс или ещё чего-нибудь вытворяет
Re[5]: Измения в ListBox
От: Leonid Troyanovsky  
Дата: 10.12.04 21:06
Оценка:
Здравствуйте, Dimonka, Вы писали:

D>Как насчёт того, чтобы сделать класс, отвечающий за хранение и изменение этих самых строк? Потом же в 100 раз легче будет думать о третьей форме, которая перетасовывает этот лист-бокс или ещё чего-нибудь вытворяет


Класс, это конечно, хорошо. Но и простой TStringList вполне годится в этом качестве.
Если, конечно, показывается только одно поле.
Понятно что TListBox никак с этим хранилищем не развязать, как собс-но, и форму
редактирования. Ну, а форме от ListBoxa нужен только индекс.
В принципе, если на той форме TEdit/TMemo об изменении данных можно узнать
и до обращения к хранилищу.

Ну, а если сделать форму редактирования модальной все совсем просто
(даже если из нее можно менять ItemIndex).
--
С уважением, LVT
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.