Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];

Вниз

MDI - сохранение и востановления   Найти похожие ветки 

 
AdminSKBZ ©   (2006-09-27 11:27) [0]

У меня такой вопросик. Надо написать программу, которая содержит главное окно MDI и дочерние. В дочерних окнах находятся компоненты Edit, CommoBox, Button. И при нажатии кнопки второй раз данные с  Edit, CommoBox заносятся в базу данных. Но вопрос стоит так чтоб при первом нажатии кнопки данные с Edit, CommoBox сохранялись, где ни будь, я организовал сохранение в базу данных, отличную от той в которую вносятся при втором нажатии кнопки. Далее если при случайном закрытии программы, данные которые сохранились при нажатии первый раз кнопки, восстанавливались в дочерние MDI окна вновь запущенную программу, если сбоя или закрытия программы не произошло, то удалялись при нажатии второй раз кнопки из базы данных, которая сохраняет эти данные.
Организацию сохранения и удаления при сбоя организовал, осталось при сбое их вернуть в дочерние окна. Заранее благодарю!


 
ЮЮ ©   (2006-09-27 11:43) [1]

Далее если при случайном закрытии программы, данные которые сохранились при нажатии первый раз кнопки, восстанавливались в дочерние MDI окна вновь запущенную программу, ...

Проще защититься от "случайного" закрытия окна, чем изобретать такое


 
MsGuns ©   (2006-09-27 14:00) [2]

1. Править информацию БД в MDI-режиме - штука опасная и требует как минимум понимания основ хранения и доступа в СУБД (в частности такие вещи, как конфликты, транзакции, блокировки и т.д.). Рекомендую интерфейс изменения в БД реализовать в модальном режиме, в котором обеспечится принцип "пока не подтвердил или не отменил, уйти с формы нельзя".
2. Форма для правки (та самая, где расположены указанные в сабже "Edit, CommoBox", а говоря проще - визуальные контролы для ввода значений в таблицы БД) должна иметь у себя (в секции Public) переменные, куда вызывающий модуль перед ShowModal помещает значения полей записи перед правкой.
Например, в главной форме:

procedure TForm1.ButtonEditClick(Sender: TObject);
begin
 with TUpdateForm.Create(Self) do
   try
     sFldTN := Table1.FieldByName("TN").AsString;
     sFldFIO := Table1.FieldByName("FIO").AsString;
     nFldRng := Table1.FieldByName("Rng").AsFloat;
     InitControls;
     ShowModal;
   finally
     Free;
   end;
end;


В "правочной" форме написать:

type
 TUpdateForm = Class(Tform);
  ....
 public
    sFldTN := String;
    sFldFIO := String;
    nFldRng := double;
    procedure InitControls;
    function CheckControls: boolean;
 end;

implementation

procedure TUpdateForm.ButtonCancel(Sender: TObject);
begin
 InitControls;  // Отмена изменений и восстановление исходных значений полей
end;

procedure TUpdateForm.ButtonPost(Sender: TObject);
begin
 // Формирование запроса на изменение данных в таблице
 Close;
end;

procedure TUpdateForm.ButtonClose(Sender: TObject);
begin
 Close;
end;

procedure TUpdateForm.InitControls;
// Данные из "буферных" переменных разносятся по визуальным контролам
begin
 Edit1.Text := sFldTN;
 Edit2.Text := sFldFIO;
 ...
end;

function TUpdateForm.CheckControls: boolean;
// Контроль корректности введенных (измененных) данных
begin
 result := false;
 with Edit1 do
    if Length(Trim(Text))<5 then
      begin
       ShowMessage("Ошибка в фамилии");
       SelectAll;
       SetFocus;
       exit;
      end;
 with Edit2 do
     ....  
 result := true;
end;    

   end; := sFldTN;
 Edit2.Text := sFldFIO;
 ...
end;



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.037 c
3-1155278466
wipr
2006-08-11 10:41
2006.10.15
Open and detach


15-1159165753
syte_ser78
2006-09-25 10:29
2006.10.15
palm m105


2-1159428483
memo
2006-09-28 11:28
2006.10.15
DLLCHILD...


15-1158762969
DillerXX
2006-09-20 18:36
2006.10.15
Стоит ли менять монитор на ЖК?


2-1159431437
C@N
2006-09-28 12:17
2006.10.15
Memo и подмена символов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский