По моим выкладкам поле memo не имеет начала и конца...
Если навести переключение фокуса через кн. enter, то содержимое поля начинает скатываться вниз до бесконечности. Тогда принял решение навести фокус на конец введенного текста... и текст пополз бесконечно вверх.
Подскажите как правильно настроить или исправьте, чтоб хотя бы было жесткое начало, как у "луча"

Решил еще и на OnCellClick повесить цикл.

В процедуре OnCellClick есть сдвиг, т.е. при нажатие появляется выделение при отжатие пропадает, и все же id меняется...

наверно надо как-то чтоб при включенном enabled работала прокрутка или растягивать таблицу...

Не знаю, но после OnCellClick в теле скрипта, frmNote.TableGrid1.SelectedRow := -1; заработало, как будто,прога вспомнила, что, она так может smile

А можно добавить кнопку сброса свойств поэлементно... а то можно забыть что и как...
И как не хватает кнопки возврата действия... например пишешь скрипт, залипла мышка - раз и нет куска скрипта. smile

Ок, раскраска помогла, но, блин, как выключить выделение строки вообще... функция enabled хороша, но тогда выключается прокрутка. А так при нажатии на таблицу меняется id, и моя задумка не работает...

это не работает:

frmNote.TableGrid1.SelectedRow := -1;

Удалил из формы onClose ссылку и так и оставил в списке скриптов... эффекта нет, при нажатии на крестик просто закрывает и все.

А такой

procedure frmMain_OnCloseQuery (Sender: TObject; var CanClose: Boolean);

процедуры нет в свойствах формы версии 5,5...

258

(8 replies, posted in Russian)

Попробую на другой машине под управлением интел. А то рабочая уже засорилась, что usb в проводнике не отображает, а в управление дисками присутствует...

Есть два момента

procedure frmAddNote_Button4_OnClick (Sender: TObject; var Cancel: boolean);
begin
    //Проверка на заполнение полей
    if (frmAddNote.Edit1.Text='') then ShowHint(frmAddNote.Edit1, 'Обязательное поле') else
    begin
        Cancel := True;
    end;

    //Сохранение
    frmAddNote.Button1.Click;
end;

как не дать здесь выполнить frmAddNote.Button1.Click;

и.

procedure frmMain_OnClose (Sender: TObject; Action: string);
begin
    if IDNO = MessageBox('Вы действительно хотите выйти?','Подтверждение',MB_YESNO+MB_ICONQUESTION) then frmMain.Close;
    frmMain.Show;
end;

При ответе "нет" циклически появляется повторное подтверждение, процедура не та что ли...

Выкрутился так по сравнению id

var
    a : string;
    b : string;

procedure frmAddNote_Button2_OnClick (Sender: TObject; var Cancel: boolean);
begin
    frmNote.Close
end;

procedure frmNote_OnClose (Sender: TObject; Action: string);
var
    aId : string;
begin
    aId := SQLEXecute('SELECT id FROM statistic WHERE id='+frmNote.TableGrid1.sqlValue);
    if (aId > a) then frmNote.Close else
    if (aId = a) and (b = '1') then frmNote.Close else
    if (aId = a) then frmNote.Button1.Click;
    b := '1';
    frmMain.TableGrid1.dbUpdate;
end;

procedure frmNote_OnShow (Sender: TObject; Action: string);
var
    i, cR : integer;
begin
    cR := frmNote.TableGrid1.RowCount;
    begin
        //выделение первой строки таблицы
        //frmNote.TableGrid1.SelectedRow := 0;

        frmNote.TableGrid1.BeginUpdate;
        for i := 0 to cR do frmNote.TableGrid1.SelectedRow := i;
        frmNote.TableGrid1.EndUpdate;
    end;
    a := SQLEXecute('SELECT id FROM statistic WHERE id='+frmNote.TableGrid1.sqlValue);
    b := '0';
end;

А вот этот полутон можно убрать без нарушения выделения, чтоб все значения в таблице были одинакового выделения.

Смог выделить последнюю строку таблицы, так:

procedure frmNote_OnShow (Sender: TObject; Action: string);
var
    i, cR : integer;
begin
    cR := frmNote.TableGrid1.RowCount;
    begin
        //выделение первой строки таблицы
        //frmNote.TableGrid1.SelectedRow := 0;

        frmNote.TableGrid1.BeginUpdate;
        for i := 0 to cR do frmNote.TableGrid1.SelectedRow := i;
        frmNote.TableGrid1.EndUpdate;
    end;
end;

А как скрыть, закрасить полутон не получается

262

(8 replies, posted in Russian)

Так как, мне прикреплять проект для изучения?
Еще обнаружил, что в теме http://myvisualdatabase.com/forum/viewtopic.php?id=4113 перестал работать последний проект.

sibprogsistem, я правильно понимаю, что у каждой новой записи все дочерние должны начинать id c начала, т.е.:

1:1,2,3,4
2:1,2,3,4

?

Если да, то у меня есть еще проблемная таблица... В принципе, она работает, т.е., но id...

1:1,3,4,6
2:2,5,7,8

Мне надо решить задачку по сравнению id, чтоб повторно, не открывалась одна и та же форма при увеличении id.

таблица statictic представляет собой таблицу в главной таблице, где ведется история действий по главному id

264

(8 replies, posted in Russian)

У этой кнопки: стандартная процедура сохранения, скрипт на после нажатие и  отключено срабатывание по умолчанию,..

265

(8 replies, posted in Russian)

Стандартная операция добавление элемента из одно колонки в другую и закрытие окна. Но если создавать еще кнопку и проделывать туже операцию все норм. А вот на этой кнопке свет клином сошелся...

добавил текстовое поле в таблицу и все заработало, сп.

267

(8 replies, posted in Russian)

Программа крашится в моем проекте. Есть у меня клавиша сохранить, в ней добавляю еще одно поле для сохранения и после сохранения появляется меню anchors... жму ок и наживаю на форму вылетает ошибка

инвалит поит оперейшен... и потом выскакивает ошибка адреса...

Так и случилось, что "значение строки изменится для всех  ссылающихся записей"... буду пробовать переделать по примеру выше.

Вот настройки таблицы frmMain.TableGrid1

Наверно, я что-то нахимичил со связью в таблице... не выдает id дочерней записи.

var
sId:string;
begin
  sId:= SQLEXecute('SELECT request.id FROM request LEFT OUTER JOIN notice ON request.id_notice=notice.id WHERE notice.id=' +frmMain.TableGrid1.sqlValue );
  SQLEXecute('UPDATE notice SET setNotice="'+frmAddNote.Edit1.Text+'" WHERE id=' +sId);
  frmMain.TableGrid1.dbUpdate;
end;

У меня есть предположение, надо было сделать поле в таблице где будет сливаться значение comboBox "notice", как в вашем примере

не понимаю, как получить id последнее записи дочерней таблицы...

var
name:string = IntToStr(Last_Insert_id);
procedure Form3_OnShow (Sender: TObject; Action: string);
begin
  Form3.ComboBox1.dbItemID:= Form1.TableGrid1.dbItemID;
  Form3.Edit1.Text:= Form3.ComboBox1.Text;
  name:=SQLEXecute('SELECT id FROM statusv WHERE id='+ Form3.ComboBox1.sqlValue);
end;

Выдает не понятный id. Может потому что Form3.ComboBox1.dbItemID; не уникально...
либо нужен фокус на последнюю запись в таблице Form3.TableGrid1... и тоже не понятно как...

мне нужно обновить запись... это перекликается с темой в соседней ветке
http://myvisualdatabase.com/forum/viewtopic.php?id=5133

Вроде, наконец-то...
А дочерней записи, можно узнать?

SQLExecute('SELECT setStatus FROM status LEFT OUTER JOIN client ON status.id=client.id_status WHERE client.id='+frmNew.ComboBox2.sqlValue);

Что-то наподобие этого?

sibprogsistem, подскажите, а этом примере как получить в главной таблице последнее значение статуса, сп..

странно... но в примере выше работает, но в пределах одной формы

//глобальная переменная
var
name:string;

procedure Form1_Edit1_OnChange (Sender: TObject);
begin
  // присваеваем переменной текст
  name:=Form1.Edit1.Text;
end;
procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
begin
  //выводим значение переменной
  showmessage(name);
end;