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 27 of 61)
Topics by k245 User defined search
Posts found: 651 to 675 of 1,517
TAForm - это класс форм, которые создаются в визуальном редакторе. У класса есть конструктор Create, что предполагает возможность программного создания таких форм.
procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
begin
CreateForm;
end;
procedure CreateForm;
var
Form:TAForm;
begin
Form := TAForm.Create(Application);
Form.ShowModal;
end;
begin
end.
При компиляции ошибки нет, но стоит нажать кнопку для создания формы, получаем ошибку:
NickB wrote:Добрый день,
а можно сделать автозаполнение в МЕМО и через запятую, то есть к примеру набираешь "ро" заполняется Россия ставлю запятую набираю "пак" заполняется Пакистан и тд ,чтоб оно выглядело вот так (Россия, Пакистан, Китай) ?
я соединил МЕМО с несколькими Edit полями, добивив слеш получается Россия/Пакистан/Китай, но если я ничего не заполняю то программа выдает в пустом МЕМО вот так (///)
Заранее благодарен
Возможно всё. На невозможное нужно чуть больше времени. (с)
Но вопрос: а нужно ли? Вы хотите сделать текстовый редактор с автозавершением ввода? Это возможно, хотя и весьма сложно, но что-то мне подсказывает, что есть более простое решение вашей бизнес-задачи. В чем заключается цель данных манипуляций?
Столкнулся проблемой: не у всех компонентов доступно свойство StyleElements. В частности, это TdbStringGridEx (табличная сетка). Видимо из-за этого при программном создании компонента невозможно задать для него стиль. Очень странно и грустно, что по умолчанию он создётся без стиля. Кто-нибудь знает, как программно создавать "стильные" таблицы?
I ran into the opposite problem: not all components have the StyleElements property available, apparently because of this, when creating a component programmatically, it is impossible to set a style for it. Specifically, it's TdbStringGridEx (Table Grid). It is very strange and sad that by default it is created without style. Does anyone know how to programmatically create stylish tables?
StateOne wrote:Hello K245;;;
is there way to connect mvd with sql server like we mvd connected with mysql
If you meant MS SQL server, then the answer is here: http://myvisualdatabase.com/forum/viewtopic.php?id=7098
I have a couple of articles on this topic. The first one that StateOne pointed out talks about changing styles from the application using a script. The following section explains how to add button images to a theme: https://k245.ru/mvdb/effekt-babochki.html
ПРЕДЛОЖЕНИЕ
ClassExplorer. Справочная система разработчика
БЕСПЛАТНО
Накапливайте ваши знания по объектной модели, систематизируйте информацию по готовым решениям.
Подходит для разработчиков My Visual Database и всех других систем, использующих принципы объектно-ориентированного программирования.
Программа позволяет хранить данные о
Классах
Типах
Свойствах
Методах
Событиях
Функциях
Переменных
Типовых задач
Скачать: https://drive.google.com/file/d/1ADDnkK … sp=sharing
Обсудить: https://k245.ru/mvdb/effekt-babochki.html
Эффект бабочки
Завершив работу над первой версией программы "ClassExplorer", я решил немного усовершенствовать её: разнести программный код по отдельным модулям, а также добавить механизм управления стилями. Но эти казалось бы небольшие изменения создали кучу хлопот.
Читать: https://k245.ru/mvdb/effekt-babochki.html
Нашел на форуме, но не проверял:
Работа с SQLite, подключение к MySQL
procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
var
MySQL: TMyConnection;
MySQLQuery: TMyQuery;
begin
MySQL := TMyConnection.Create(Form1);
MySQLQuery := TMyQuery.Create(nil);
try
MySQL.Options.UseUnicode := True;
MySQL.Server := '127.0.0.1'; // ip address of MySQL server
MySQL.Port := 3306;
MySQL.Username := 'login';
MySQL.Password := 'password';
MySQL.Database := 'databasename';
MySQL.LoginPromt := False;
try
MySQL.Connect;
except
ShowMessage('Can''t connect to database.');
end;
if MySQL.Connected then
begin
// SQL query
MySQL.ExecSQL('INSERT INTO test (field1, field2) VALUES ("value1", "value2")');
// how to get data
MySQLQuery.Connection := MySQL;
MySQLQuery.SQL.Text := 'SELECT fieldname FROM tablename';
MySQLQuery.Execute;
while not MySQLQuery.EOF do
begin
Form1.Memo1.Lines.Add( MySQLQuery.FieldByName('fieldname').AsString );
MySQLQuery.Next;
end;
MySQL.Disconnect;
end;
finally
MySQLQuery.Free;
MySQL.Free;
end;
end;
То есть тут все наоборот: проект настроен на SQLite, но работает с базой MySQL. Полагаю, можно и с несколькими базами работать одновременно, создав для каждой свои экземпляры компонентов доступа.
procedure Grid_AddFrame( AGrid: TdbStringGridEx; );
// add frame for table view
// as it turned out, if you just change the Border property, then this causes an unpleasant flicker,
// from which even double buffering does not save; so add a frame shape
var
tmpShape: TShape;
begin
// create a frame
tmpShape := TShape.Create(TComponent(AGrid).Owner);
// name consists of class prefix, personal name, and table view name
tmpShape.Name := T_SHAPE+GRID_FRAME_NAME+'_'+DeleteClassName(AGrid.Name);
tmpShape.Parent := AGrid.Parent;
tmpShape.Top := AGrid.Top;
tmpShape.Left := AGrid.Left;
tmpShape.Width := AGrid.Width;
tmpShape.Height := AGrid.Height;
tmpShape.Shape := stRectangle;
// set border color
tmpShape.Pen.Color := AGrid.Font.Color;
tmpShape.Pen.Width := GRID_FRAME_WIDTH;
// set shape color
tmpShape.Brush.Color := AGrid.Font.Color;
tmpShape.Anchors := akTop+akLeft+akBottom+akRight;
// adjust the size and appearance of the table view
AGrid.Left := AGrid.Left + GRID_FRAME_WIDTH;
AGrid.Top := AGrid.Top + GRID_FRAME_WIDTH;
AGrid.Width := AGrid.Width - 2*GRID_FRAME_WIDTH;
AGrid.Height := AGrid.Height - 2*GRID_FRAME_WIDTH;
AGrid.BorderStyle := bsNone;
end;
If I understand the style mechanism correctly, then the answer is "no". But I solved this problem in a different way: I placed the TShape component on the form, and set the color I needed through the Brush.Color and Pen.Color properties.
chartcatuser wrote:Познавательно. У меня вот база настоена на MySQL и я сижу в 1 соединениее под названием BASE в сегменте 192.168.0.1 вот и вопрос вполне реализуемо сделать не только запрос но и изменения в другом соединение BASE2 в другой MySQL в другой сети 192.168.1.1 ?
Возможно создать ещё один экземпляр соединения с другой базой. Но как его использовать для выполнения запроса, мне не понятно.... Может, у вас получится? С разными базами (схемами) на одном сервере теоретически можно работать (перед именем таблицы можно указать имя схемы) , а вот чтобы с разными серверами...
А вот SQLite работает с разными базами, но лично мне этим заниматься не приходилось, но задумка одна имеется...
chartcatuser wrote:k245 wrote:chartcatuser wrote:Помогите с виртуалкой. Никак не могу заставить работать DateTimePicker1 что с ним не так ?
Для начала опишите ваши ожидания: как вы себе представляете логику его работы?
при нажатии на поле с датой виртуальная клавиатура изменяла его значение, тоесть я edit и memo привязал к клавиатуре а дату не получается
TdbEdit хранит набор символов (тип String), поэтому при нажатии на клавиатуре добавляется ещё один символ (TChar).
TdbDateTimePicker хранит дату (тип TDateTime, по сути Float - число с плавающей точкой). Что вы хотите добавить туда с клавиатуры, которая выдаёт символы?
А если серьёзно, то у TdbDateTimePicker нет удобного посимвольного управления строкой ввода данных. И вообще мне кажется, что вы движетесь не в том направлении. Попробуйте передавать не символы, а сообщения о нажатии клавиш (см. SendMessage() ) - пусть компоненты отрабатывают привычную им логику обработки данных.
У вас сам проект настроен как проект MySQL? Или как SQLite?
Чтобы пользоваться стандартной функцией SQLExecute для работы с MySQL проект должен быть тоже MySQL.
P.S. Ваш запрос работает, но он выдает размеры всех таблиц во всех схемах (БД). Обычно интересует какая-то одна. Я бы добавил условие WHERE TABLE_SCHEMA = "Название БД"
chartcatuser wrote:Помогите с виртуалкой. Никак не могу заставить работать DateTimePicker1 что с ним не так ?
Для начала опишите ваши ожидания: как вы себе представляете логику его работы?
Ошибка в проектировании базы данных.
Если вам нужно преобразовывать интервал даты в индекс, то структура таблицы с периодами должна быть такая:
Period
PeriodFrom - integer
PeriodTo - integer
Тогда установка периода выглядит так:
tmpPeriod := Калькулятор.DateTimePicker2.DateTime - Калькулятор.DateTimePicker1.DateTime +1;
Калькулятор.ComboBox3.dtItemID = SQLExecute( 'SELECT id FROM Period WHERE PeriodFrom >= '+tmpPeriod+' and PeriodTo <= '+tmpPeriod );
Не забудьте в свойствах ComboBox3 указать
FieldName = {PeriodFrom}-{PeriodTo}
chartcatuser wrote:k245 wrote:chartcatuser wrote:Клавиатура используется для ввода логина и пароля на терминале с сенсорным экраном
Вы создаете программы для терминалов? И часто заказывают?
Подскажи если не трудно вариант решения
Я прикладываю проект я не могу объединить два скрипта: суть в таблице определеные значения одной нопкой жмем и сразу всем присваиваеться статус checkboxa = 1 или 0 и автоматом ставиться дата тоже всем
У вас другая проблема: вы не можете сформулировать правильно вопрос.
В процедуре ChangeValues1() у вас дата ставится только, если передаваемый параметр = True, если передать False, то ваш скрипт выдаст ошибку. Вы с бизнес-логикой сначала разберитесь, а потом уже скрипты объединяйте.
Если же нужен скрипт без параметра, который ставит дату и присваивает значение полю isSmoke, то вот он:
procedure ChangeValues1;
var
i: integer;
begin
for i := 0 to Form1.GridEmployees.RowCount-1 do
begin
if Form1.GridEmployees.Selected[i] then
begin
SQLExecute('UPDATE employees SET DateOfBirth = '+Form1.dtDateOfBirth.sqlDate +', isSmoke = 1 WHERE id='+IntToStr(Form1.GridEmployees.dbIndexToID(i)));
end;
end;
Form1.GridEmployees.dbUpdate;
end;
Уважаемые форумчане!
К сожалению, содержимое ветки Database application. Ready to use progects давно не соответствует своему названию: вместо готовых к использованию проектов там задают вопросы, на которые почти никто не отвечает. Поэтому я решил исправить ситуацию.
В данной теме прошу размещать сообщения двух видов:
В каждом сообщении прошу размещать:
Тип сообщения (спрос/предложение)
Название программы (для предложения) + краткое описание (одним предложением)
Скриншот (для предложения)
Стоимость в рублях (для предложения) или бюджет (для спроса). Или волшебное слово "бесплатно"
Описание ключевых особенностей (один абзац)
Ссылка для скачивания (для предложения)
Ссылка для обсуждения
Во пример такого сообщения:
ПРЕДЛОЖЕНИЕ
Equipment Inventory. Средство инвентаризации и учета.
БЕСПЛАТНО
Управляйте своим компьютером, офисом или производственными активами с помощью этой базы данных.
Скачать: http://myvisualdatabase.com/database_ex … entory.zip
Обсудить: http://myvisualdatabase.com/forum/viewtopic.php?id=1493
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Комментарии и обсуждения проектов и запросов на разработку прошу вести в отдельной теме.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I see no reason to duplicate this topic in the English thread, so I invite everyone who uses English (or any other language that Google Translate works with ) to communicate on this forum to post their posts here.
chartcatuser wrote:Клавиатура используется для ввода логина и пароля на терминале с сенсорным экраном
Вы создаете программы для терминалов? И часто заказывают?
Виртуальная клавиатура симпатичная вышла, хотя я не представляю, как можно на компе без реальной клавиатуры )))
Переключение раскладки - это замена всех заголовков на кнопках с буквами. Так как никакой логики в названии кнопок нет, то нужно выполнить 33 команды вида
Form2.Button1.Caption := 'Й'
Но у меня встречный вопрос: в каких случаях используется эта клавиатура? Кроме того, я бы не рекомендовал любые символы использовать для логина/пароля, особенно для пароля. Есть специальный стандарт ISO, который это регулирует, потому что очень легко спутать 0 и О, 1 и l и так далее.
NickB wrote:Вызывать в главной секции приложения для форм, в которых нужно поддерживать AutoScroll = True
begin
AddScrollBox( Form1 );
end.
Я код скопировал, в скрипт но что то не сработало ? По всей видимости не правильно что то сделал ?
на всех формах выставил AutoScroll = True
Да я хотел пошутить над премиями за ковид, но вижу, что всё очень серьёзно...
chartcatuser wrote:Does anyone know how to increase the tick on the checkbox ?? And then in the editor it shows a large one, but in fact, when you run the program, it is small
datetimepiker
It is impossible to do this, since a system component is used to display the checker. Neither the size nor the color can be changed.
Подтверждаю, установка любого стиля делает свойство формы AutoScroll бесполезным. Причину этого явления назвать не могу, но могу предложить костыль - процедуру, которая добавляет на форму компонент TScrollBox и переносит на него все другие компоненты формы. TScrollBox в сочетании с темой отображается корректно.
procedure AddScrollBox( AForm:TAForm;);
var
SB:TScrollBox;
i: integer;
begin
SB := TScrollBox.Create(AForm);
SB.Parent := AForm;
SB.Align := alClient;
for i := AForm.controlCount - 1 downto 0 do
begin
if AForm.Controls[i] <> SB then
AForm.Controls[i].Parent := SB;
end;
end;
Вызывать в главной секции приложения для форм, в которых нужно поддерживать AutoScroll = True
begin
AddScrollBox( Form1 );
end.
NickB, вы шокируете своим проектом. Премия за ковид-19 - это бухгалтерия Цитадели Зла? )))
Пожалуйста, загрузите простой пример, в котором теряется свойство AutoScroll при установке стиля
Posts found: 651 to 675 of 1,517