Skip to forum content
My Visual Database
A Simple Solution for Creating Databases
You are not logged in. Please login or register.
Active topics Unanswered topics
Search options (Page 2 of 68)
sonixax wrote:Many thanks,
But I want to have it before save anything!
I want to use it in scripts to show something on the form, no matter if save button pressed or not.
is it still stored in save button properties even before click on save button?
узнать максимальный id вашей таблицы
SQLExecute('SELECT seq FROM SQLITE_SEQUENCE WHERE name="a"');
добавьте 1 и Вы получите номер будущей записи
всем привет
попробуйте этот вариант
сделал так
Repeat
if ( TdbPanel(TdbPanel(panelGeneral).Parent) is TdbPanel ) then
begin
XY := XY-TdbPanel(panelGeneral).Left-frm.Left - TdbPanel(TdbPanel(panelGeneral).Parent).Left-5;
YY := YY-TdbPanel(panelGeneral).Top-frm.Top-TY - TdbPanel(TdbPanel(panelGeneral).Parent).Top;
panelGeneral := TdbPanel(panelGeneral).Parent;
CPName := TdbPanel(panelGeneral).Parent.Name;
end;
if ( TdbGroupBox(TdbGroupBox(panelGeneral).Parent) is TdbGroupBox ) then
begin
XY := XY-TdbGroupBox(panelGeneral).Left-frm.Left - TdbGroupBox(TdbGroupBox(panelGeneral).Parent).Left-5;
YY := YY-TdbGroupBox(panelGeneral).Top-frm.Top-TY - TdbGroupBox(TdbGroupBox(panelGeneral).Parent).Top;
panelGeneral := TdbPanel(panelGeneral).Parent;
CPName := TdbGroupBox(panelGeneral).Parent.Name;
end;
if ( TdbTabSheet(TdbTabSheet(panelGeneral).Parent) is TdbTabSheet ) then
begin
XY := XY-TdbTabSheet(panelGeneral).Left-frm.Left - TdbTabSheet(TdbTabSheet(panelGeneral).Parent).Left-5;
YY := YY-TdbTabSheet(panelGeneral).Top-frm.Top-TY - TdbTabSheet(TdbTabSheet(panelGeneral).Parent).Top;
panelGeneral := TdbPanel(panelGeneral).Parent;
CPName := TdbTabSheet(panelGeneral).Parent.Name;
end;
until frm.FindComponent(CPName) = nil;
k245 wrote:Это позволяет создавать универсальные обработчики, не привязанные к конкретной форме или компоненту:
Спасибо
k245 wrote:Для этого нужна рекурсивная процедура, которая будет складывать top и left с родительскими. В Дельфи это метод встроен в компоненты, в MVDB придется писать скрипт ))).
да я так и делаю, но я хотел написать универсальный скрипт, ведь компонент может находиться не только на самой форме..
к примеру на панели_1 которая находиться на панели_2 которая вообще расположена в еще каком ни будь боксе..
..
возможно-ли определить координаты компоненты относительно экрана а не формы..
derek wrote:Возможно, попробуйте так..
Супер, спасибо!!!
помогите !!
мне нужно получить имя формы на которой произошло действие (любое действие)
k245 wrote:Тут несколько принципов нужно применить.
Во-первых, чтобы обработчики этих компонент не содержали в своем коде жесткой привязки к этим компонентам, а работали через FindComponent.
Во-вторых нужно отказаться от хранения этих как я их называю "виртуальных классов" на форме. Их лучше создавать программно, а на форме для удобства можно размещать "плейсхолдер" - обычный компонент, на месте которого будет "строиться" экземпляр "виртуального класса".
Как раз на эту тему пишу статью ))) Точнее, в статье описываются такие "виртуальные классы". Если интересно, могу эту тему копнуть глубже, дать больше теории и практических примеров.
Да, мне это очень интересно, было бы здорово...
vovka3003 wrote:А, ну тогда понятно...
Дублирование компонентов и их потомков во время выполнения приложения
vovka3003 wrote:Ctrl+A, Ctrl+С, Ctrl+V...
Не?
нет, не то...
пользователь будет добавлять на панель нужный ему набор..
я хачу в паре форм поместить компоненты и сгруппировать их на панели, настроить их по умолчанию ..
далее уже сам пользователь будет добавлять эти сгруппированные компоненты не своей форме (получиться конструктор)
всем привет!
у меня на форме есть готовый набор компонентов, я хочу этот набор не переносить а копировать на другой форме
по факту, что-то в роде класса
как можно такое реализовать?
Alfil wrote:Между делом возник еще такой вопрос: Возможно ли сделать что б при открытии формы все записи в таблице по умолчанию были выбраны?
procedure Form1_OnShow (Sender: TObject; Action: string);
var
i: integer;
begin
for i:=0 to Form1.TableGrid1.RowCount-1 do
Form1.TableGrid1.Row[i].Selected := True ;
end;
Alfil wrote:Новый вопрос: Как сделать что б в случае пустого combobox на нем всплывало сообщение о том что он обязателен для заполнение, такое же как всплывает над пустым TextBox, обязательным для заполнения. Сейчас при пустом просто вылетает ошибка
ShowHint(component,'message');
procedure Form1_Button2_OnClick (Sender: TObject; var Cancel: boolean);
var
i: integer;
begin
for i:=0 to Form1.TableGrid1.RowCount-1 do
if Form1.TableGrid1.Row[i].Selected then
SQLExecute('INSERT INTO b(bb)VALUES("'+ IntToStr(Form1.TableGrid1.Row[i].ID) +'")');
UpdateDataBase('b');
end;
Form1.Memo1.Text := HTTPGet('http://sibprogsistem0.myjino.ru/README.md/',False);
pwildman wrote:I have a table of sellers/creators that I use to track whether I have reviewed the current monthly product offerings for each seller/creator. I have a boolean column named 'reviewed' in the table that tracks whether I reviewed the seller/creator.
The problem I have is that at the beginning of the next month I would like to have all the 'reviewed' values cleared so that I can track whether I have reviewed the sellers/creators for the new month. I am thinking that there could be use case issues and extra complexity for an automated process to clear the 'reviewed' values. I think a button to activate the process would be a better way to do this.
Прикрепите Ваш проект
Alfil wrote: запись проискодит только если в этот момент активна таблица, то есть если фокус при нажатии клавиши "добавить" находится на SearchPrihTab.
видимо что-то у Вас не корректно настроено..
если не найдете, то сделайте глобальную переменную и при клике по ячейке заполняйте переменную и потом используйте ее в создании записи
var - объявляется только один раз
Вы пытаетесь получить id из таблицы в которую потом же пытаетесь записать поля Prih
а нужно брать id таблиц Book и Docs , и потом записывать их в ключ
var
IDdocs:string = SQLExecute('SELECT id FROM Book WHERE id='+PrihForm.CombDocs.sqlValue); // id записи таблицы Docs
IDbook:string = SQLExecute('SELECT id FROM Docs WHERE id='+PrihForm.SearchPrihTab.sqlValue); // id записи таблицы Book
а вообще получать id таким способом не обязательно так как sqlValue содержит этот самый id
можно записать так
SQLExecute('INSERT INTO Prih(KolPr, id_Docs, id_Book) VALUES ("'+PrihForm.KolPr.Text+'","'+PrihForm.CombDocs.sqlValue+'","'+PrihForm.SearchPrihTab.sqlValue+'")'); //Запись в Prih
k245 wrote:Кулинарная книга
Сегодня утром, приготовив завтрак, я решил, что каждый день буду создавать по одному небольшому проекту или по одной следующей версии существующих проектов. Каждый такой проект будет распространяться без ограничений и сопровождаться кратким отчетом по его созданию. Поэтому вполне логично сделать свой первый проект пригодным для хранения кулинарных рецептов.
Читать: https://createmyvisualdatabaseapp.blogs … -post.html
Вы меня опередили, я тоже хотел создать такую программу )))
а вообще идея хорошая
procedure checkBoxTest (Sender: TObject);
var
i:integer;
begin
for i:=0 to Form2.ComponentCount-1 do
if TdbCheckBox(Form2.Components[i] is TdbCheckBox) then
if (TdbCheckBox(Form2.Components[i]).Name <> TdbCheckBox(Sender).Name) then TdbCheckBox(Form2.Components[i]).Checked := False;
TdbCheckBox(Sender).Checked := True;
end;
k245 wrote:
1. В обработчике onShow пробежать по всем компонентам формы (свойство TForm.components[]) и в свойство TagStr записать текущее значение, при необходимости сконвертировав его в строку. Тут придется использовать проверку на класс (оператор is) и приведение к нужному типу. Это позволит создать один универсальный обработчик и подключить его ко всем формам редактирования.
2. В функции Form_isDataChange опять пробежать по всем компонентам и сравниmь текущее значение и свойство TagStr. Если есть различия, значит были изменения.
Но если нужен именно триггер, то придется навешивать разные обработчики на каждый редактируемый компонент формы, внутри которых вызывать процедуру-триггер.
тогда наверное лучше json
при загрузке пробежать по компонентам и записать их в json
trigger (массив)[
объект(компонент){
" ключ ":" значение",
" ключ ":" значение"
}
объект(компонент){
" ключ ":" значение",
" ключ ":" значение"
}
]
derek wrote:Привет Sibprogsistem,
Возможно, попробуйте так.
С уважением,
Derek.
just what I needed, thank you so much!!
гуглил и не нагуглил ))
как можно sql запросом получить имена полей в таблице?
Posts found: 26 to 50 of 1,694