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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.07.2014, 22:23   #1
Janger
Форумчанин
 
Регистрация: 28.09.2011
Сообщений: 250
Печаль ClientDataSet. Удалить запись

Товарищи!!!
Очень надеюсь на вашу помощь... Весь инет облазил, ничего толкового найти не смог, на форумах разных сайтов спрашивал... Тоже, никто ничего не знает...Последняя надежда на вас...
---------------------------------------------
Суть, у меня в ListBox строки, которые сохранены в XML-документе. К которому я подключаюсь через ClientDataSet.
Как мне удалить выделенную строку в ListBox из XML.
Я нашёл такую вещь:
Код:
ClientDataSet1.DeleteIndex();
В скобках нужно указывать какое то значение типа String.
Я предположил, что можно сделать так:
Код:
ClientDataSet1.DeleteIndex(ListBox1.Items.Strings[ListBox1.ItemIndex]);
Но я ошибся, при удалении строки, программа мне выдала ошибку ("Index does not exist").
----------------------------------------
Ещё увидел такой код:
Код:
ClientDataSet1.Delete;
но в данном случае, удаляется самая последняя запись введённая в XML
=================
Подскажите что мне делать... Вообще не знаю как из этой ситуации выкрутиться
Janger вне форума Ответить с цитированием
Старый 25.07.2014, 22:37   #2
DarkEvil
Форумчанин
 
Аватар для DarkEvil
 
Регистрация: 08.05.2009
Сообщений: 247
По умолчанию

Код:
ClientDataSet1.RecNo := ListBox1.ItemIndex;
Мой сайт
Цитата:
Сообщение от Scream In Darkness
Кровь не даёт покоя! Кровь не знает сна!
Кровь бежит на волю – Вены рвёт сама!
DarkEvil вне форума Ответить с цитированием
Старый 25.07.2014, 22:44   #3
Janger
Форумчанин
 
Регистрация: 28.09.2011
Сообщений: 250
По умолчанию

Цитата:
Сообщение от DarkEvil Посмотреть сообщение
Код:
ClientDataSet1.RecNo := ListBox1.ItemIndex;
Ни какой реакции нету...
Janger вне форума Ответить с цитированием
Старый 25.07.2014, 22:47   #4
Janger
Форумчанин
 
Регистрация: 28.09.2011
Сообщений: 250
По умолчанию

ТАК.....!!!!!
Я решил проблему...!!!!
Код:
procedure TForm1.Button3Click(Sender: TObject);
begin
ClientDataSet1.First;
while not ClientDataSet1.eof do
begin
    if ClientDataSet1.FieldByName('Text').AsString = ListBox1.Items.Strings[ListBox1.ItemIndex] then
       ClientDataSet1.Delete;
    ClientDataSet1.Next;
end;
end;
Но теперь появилась другая проблема...
Строка удаляется не сразу... А только после перезапуска программы.
Код:
ClientDataSet1.Active:=false;
ClientDataSet1.Active:=true;
не приносит должного эффекта.
ммм... будем думать
Janger вне форума Ответить с цитированием
Старый 25.07.2014, 22:49   #5
DarkEvil
Форумчанин
 
Аватар для DarkEvil
 
Регистрация: 08.05.2009
Сообщений: 247
По умолчанию

Удаляется не сразу в листбоксе?
или в хмл-ке?
Мой сайт
Цитата:
Сообщение от Scream In Darkness
Кровь не даёт покоя! Кровь не знает сна!
Кровь бежит на волю – Вены рвёт сама!
DarkEvil вне форума Ответить с цитированием
Старый 25.07.2014, 22:54   #6
Janger
Форумчанин
 
Регистрация: 28.09.2011
Сообщений: 250
По умолчанию

Понимаю, что сделал криво....
Но хоть работает...
В общем вот так я сделал, для того что бы строки сразу пропадали...
==1-ый код==
Код:
procedure TForm1.Button3Click(Sender: TObject);
begin
ClientDataSet1.First;
while not ClientDataSet1.eof do
begin
    if ClientDataSet1.FieldByName('Text').AsString = ListBox1.Items.Strings[ListBox1.ItemIndex] then
       ClientDataSet1.Delete;
    ClientDataSet1.Next;
end;
FormActivate(Self);
end;
Я одну строчку добавил... Ну и код, самой FormActivate
==2-ой код==
Код:
procedure TForm1.FormActivate(Sender: TObject);
begin
ListBox1.Clear;
ClientDataSet1.First;
while not ClientDataSet1.eof do
begin
    ListBox1.Items.add(ClientDataSet1.FieldByName('Text').AsString);
    ClientDataSet1.Next;
end;
end;
Ну вот в принципе и всё.
Возможно кто то тоже натолкнётся на данную проблему... Я в основном для таких людей написал
Всем спасибо большое, тему можно закрывать.
Janger вне форума Ответить с цитированием
Старый 25.07.2014, 22:55   #7
Janger
Форумчанин
 
Регистрация: 28.09.2011
Сообщений: 250
По умолчанию

Цитата:
Сообщение от DarkEvil Посмотреть сообщение
Удаляется не сразу в листбоксе?
или в хмл-ке?
Ни там, ни там, ничего не происходит. Оба элементы не меняются при перезагрузки программы.
Я в принципе решил проблему. Возможно громозко, но тем не менее, работает так как я хотел бы
Janger вне форума Ответить с цитированием
Старый 25.07.2014, 22:59   #8
DarkEvil
Форумчанин
 
Аватар для DarkEvil
 
Регистрация: 08.05.2009
Сообщений: 247
По умолчанию

Вы наверное о DBListBox не слышали или DBGrid
Мой сайт
Цитата:
Сообщение от Scream In Darkness
Кровь не даёт покоя! Кровь не знает сна!
Кровь бежит на волю – Вены рвёт сама!

Последний раз редактировалось DarkEvil; 25.07.2014 в 23:01.
DarkEvil вне форума Ответить с цитированием
Старый 25.07.2014, 23:04   #9
Janger
Форумчанин
 
Регистрация: 28.09.2011
Сообщений: 250
По умолчанию

Цитата:
Сообщение от DarkEvil Посмотреть сообщение
Вы наверное о DBListBox не слышали или DBGrid
Ааа...
Вы тут абсолютно правы.
Если использовать DBGrid+DBNavigator+DataSourse+Clien tDataSet
Вообще идеально получится. И никаких заморочек вообще нету!
Вот только мне не по душе вид DBGrid.
Ну не нравится он мне вообще
Janger вне форума Ответить с цитированием
Старый 25.07.2014, 23:10   #10
DarkEvil
Форумчанин
 
Аватар для DarkEvil
 
Регистрация: 08.05.2009
Сообщений: 247
По умолчанию

Просто его помойму сделать так как будет "нравится" куда проще чем усложнять себе жизнь. Кстате FormActivate не выход, лучше уже использовать AfterDelete у датасета
Мой сайт
Цитата:
Сообщение от Scream In Darkness
Кровь не даёт покоя! Кровь не знает сна!
Кровь бежит на волю – Вены рвёт сама!
DarkEvil вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ServerSocket, удалить запись из списка Shouldercannon Работа с сетью в Delphi 9 27.01.2013 20:17
TreeView удалить запись? lu_una Общие вопросы Delphi 1 09.11.2012 15:00
Удалить запись из файла С++ Voxa7 Помощь студентам 2 29.04.2011 08:27
ClientDataSet запись про закрытии приложения Alecs-ok99 БД в Delphi 2 14.04.2011 00:42
Как удалить запись. eliassa Паскаль, Turbo Pascal, PascalABC.NET 2 08.12.2009 11:35