CDB wrote:

Мне очень интересны ваши курсы. Они только на русском или есть английские версии?

Ваш веб-сайт я использую Google переводчик, чтобы прочитать страницу.


I am very interested in your courses. Are they only in Russian or are there English versions?

Your website I am using google translate to read the page.

There is an English version of the basic course. More details can be found here:  https://vk.com/createmyvisualdatabaseapp_en

1,077

(2 replies, posted in Russian)

Petr wrote:

Предполагаю что если на форме большое кол-во элементов то её сразу нужно разворачивать на максимальный размер экрана.
AutoSize не используем. AutoScroll ставим галочку. Вроде работает.
procedure Form1_OnResize (Sender: TObject);
begin
   Form1.Width := Screen.Width;
   Form1.Height := Screen.Height;
end;

Ваш код устанавливает размеры формы равными размеру экрана. Для получения требуемой автору поста функциональности нужно использовать свойство Constraints:


procedure Form1_OnShow (Sender: TObject; Action: string);
begin
  Form1.Constraints.MaxHeight := Screen.Height;
  Form1.Constraints.MaxWidth := Screen.Width;
end;

То есть форма никогда не будет больше размера экрана.

Ronin751 wrote:

Petr, спасибо за ответ!

Правильно ли я понял, что без таблицы (которая, в принципе, и является своего рода настройкой количества столбцов и т.д.) TreeView заполнить нельзя?
Заранее благодарен.

Можно и без таблицы. Но тогда нужно добавлять не только строки, но и колонки, примерно так:

try
  Form.Grid.Columns.Add(TNxTextColumn);
except
end;

Добавляет текстовую колонку в таблицу (или дерево). Почему-то метод Add вызывает ошибку, но колонка добавляется и все потом работает smile

1,079

(4 replies, posted in Russian)

v-makarovmail wrote:

Всем привет
Подскажите кто нибудь пожалуйста.
Есть итоговая таблица и в ней есть три поля с типом ВРЕМЯ (например: 01:30:00, 00:15:00, 02:10:00)
нужно сделать итоговое строку вконце(вычисляемое) чтобы считала все эти три поля ВРЕМЯ (получалось чтобы: 3:55).
Как мне это сделать? чтобы работало корректно.
Очень нужно.
Заранее спасибо.

http://myvisualdatabase.com/forum/viewtopic.php?id=6772

1,080

(1 replies, posted in Russian)

Сложение времени из трёх полей:


time( strftime('%s',time(fimefield_1)) + strftime('%s',time(fimefield_2)) + strftime('%s',time(fimefield_3)) ,'unixepoch'  )

P.S. Не рекомендую использовать кириллицу в названиях полей

Получить номер строки по ID:

function GetRowByID( ATable:TObject; AID: integer ):integer;
// Получить по ID элемента дерева находит номер строки; работает для таблицы и дерева, так как дерево является наследником таблицы
var
  i :integer;
  tmpTable: TdbStringGridEx;
begin
  tmpTable := TdbStringGridEx(ATable);
  Result := -1;
  for i := 0 to tmpTable.RowCount-1 do
  begin
    if tmpTable.dbIndexToID(i) = AID then
    begin
      result := i;
      break;
    end;
  end
end;

Раскрыть дерево в нужном узле:


Form1.TreeView1.Expanded[Index] := True;

1,082

(5 replies, posted in Russian)

Лучше решать такие задачи системно: в справочнике должно быть два поля: одно для краткого наименования для отображения на форме редактирования в выпадающем списке, другое - для полного наименования для печатной формы или для отображения на форме редактирования в мемо-поле скриптом после выбора значения в справочнике (выпадающем списке)

millamakova wrote:

Скажите, появилась ли на данный момент возможность открыть файл прямо из таблицы?

Сейчас это можно сделать с помощью скрипта. Для более конкретного ответа приложите ваш проект.


Или тут посмотрите варианты: http://myvisualdatabase.com/forum/viewtopic.php?id=3682

1,084

(5 replies, posted in Russian)

vovka3003 wrote:

На костылях:

Дай бог каждому пользователю MVD умение создавать подобные костыли - и будет им счастье )))

millamakova wrote:

Здравствуйте!
Подскажите пожалуйста, почему в таблице могут возникать китайские иероглифы в колонке с прикрепленным файлом.
Пусть до файла короткий без кириллицы, название файла цифры либо латиница. Больше не знаю где еще копать.

Не используйте прямое отображение файлов в таблице. В общем случае таблица не может корректно отображать содержимое прикреплённого файла. Если не ошибаюсь, нормально будут отображаться только текстовые файлы в формате UTF-8.

Raspr wrote:

Конечно, не в первую очередь, но хотелось бы иметь возможность менять местами визуальное представление таблиц. Доросло кол-во до 62 и их положение сэкономило бы время поиска.

Если речь идет о расположении таблиц на вкладке "Таблицы базы данных", то вы можете отредактировать текстовый файл tables.ini , переставив разделы в нужном порядке следования.

Vyvern wrote:

Здравствуйте! Как "одним махом" очистить несколько комбобоксов?
Вариант типа
Form1.ComboBox1.Clear;
Form1.ComboBox2.Clear;
Form1.ComboBox3.Clear;
Form1.ComboBox4.Clear;
Form1.ComboBox5.Clear;
как-то не комильфо.


Способ ниже не работает.
for i:=1 to 5 do begin
     cb:=TComboBox(Form1.FindComponent('ComboBox'+IntToStr(i)));
     cb.Clear; \\выделяет красным строку (при этом в var указано cb: TComboBox;)
end;
Где тут ошибка? Подобное вообще работает в MVD?

Ошибка в объявлении переменной cb: используйте класс  TdbComboBox:

Я не против эстетики (функциональной), но если архитектурой Windows предполагается установка нужных шрифтов в системную папку, зачем городить огород и придумывать изощрённые способы обойти это правило?  Но это уже философская тема пошла ))))

Vyvern wrote:

Можно с этого места подробнее? Хранить-то шрифт не проблема, а как его задействовать?

Как я писал ранее, установка шрифта - это копирование файлов со шрифтами в папку windows\fonts


P.S. Странно, что вопрос со шрифтами так остро встал для программы, работающей с базами данных )))

Vyvern wrote:

Вы про какую концепцию? Я искал решение этого вопроса на форумах по Дельфи, и что-то даже нашел, но, увы, не понял, как это все работает. Предлагалось создать некий RC файл, как-то его то ли проверять, то ли регистрировать. А затем уже при открытии формы устанавливать файл шрифта (в ОС, как я понял), а при закрытии формы - удалять (просто чтобы не мусорить на другом компе). Если б такое можно было бы сделать в MVD, было бы хорошо.

Установка шрифта - это копирование файлов со шрифтами в папку windows\fonts  В Win7 это проблем не вызывает, в Win10 может не прокатить из-за настройки системы безопасности.  Использовать ресурсы для хранения шрифтов в MVD не получится. Но это и не обязательно - храните их в отдельной папке или базе данных  (если хотите их "прятать" от пользователя ).


P.S. ИМХО, копировать файлы шрифтов при каждом запуске программы - это моветон )))

Vyvern wrote:

Здравствуйте!
Как закрепить компонент Label в определенном месте на форме для получения эффекта центрирования (как в Word, например)? Чтобы Label вне зависимости от количества символов все время был "по центру".
И можно ли в Label переносить не по одному слову, а в определенных рамках, как в Memo?

Вы можете центрировать текст внутри метки (Alignment = taCenter), а саму метку привязать якорями (Anchors = [Left,Right,Top]) к правому и левому краю формы.  Перенос работает по словам, но вы можете программно добавить код перевода строки для принудительного переноса

MainForm.Label1.Caption := 'Первая строка'+chr(10)+'Вторая строка'
vovka3003 wrote:
Vyvern wrote:

Как интегрировать в проект свой шрифт, чтобы он работал только во время использования базы данных?

Из-за отсутствия нужных функций в программе - это невозможно.

Изначальная концепция неверная. Для обычных windows-приложений необходимые шрифты включаются в дистрибутив и устанавливаются вместе с приложением. Свои собственные шрифты, не регистрируемые в системе, могут себе позволить игры и другие программы, использующие DirectX и/или свои собственные технологии для рендера шрифтов (векторные, текстурные, пиксельные и т.д.).

Ronin751 wrote:

Какая разница между TTreeView и TdbTreeView?

TdbTreeView - это визуальный компонент из палитры компонентов My Visual Database, может работать с источником данных.


TTreeView - это стандартный компонент VCL, можно использовать с помощью скриптов.


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

Картинку вы так не добавите. Но код интересный, хочется услышать комментарии о том, за что отвечает свойство ImageIndex у строки )))

Form1.TreeView1.Row[form1.TreeView1.LastAddedRow].ImageIndex:=1;

А картинка в дерево добавляется по такому же алгоритму, что и в таблицу:

procedure Tree_AddGrControl(ATree:TdbTreeView);
// добавление колонки с графическими элементами управления деревом
var
  G: TGraphic;
  tmpImage:TdbImage;
  tmpName: string;
  i: integer;
begin
  // проверка, чтобы не добавлять дважды
  if not (ATree.Columns[0] is TNxGraphicColumn) then
  begin
    // из-за того, что колонка с картинкой добавляется, настройки надо сдвинуть
    for i:=0 to ATree.Columns.Count - 2 do
      ATree.Columns[i].Width := ATree.Columns[i+1].Width;
    // добавляем картинку
    ATree.Columns.InsertGraphicColumn(0);
    TNxGraphicColumn(ATree.Columns[0]).BorderWidth := 0; // убрать рамки вокруг картинок
    ATree.Columns[0].Options := ATree.Columns[0].Options - coCanSort; // отключить сортировку при клике на заголовке добавленной колонки
    ATree.Columns[0].Width := 30; // ячейка с изображением
    for i := 0 to ATree.RowCount - 1 do
    begin
      tmpImage := FindImage(frmStart,tmpName); // находим нужную картинку (например TdbImage на форме) - тут должен быть ваш алгоритм...
      G := TPngImage.Create;
      G.Assign( tmpImage.Picture ); // копируем картинку в графический объект дерева
      ATree.Cell[0, i].ObjectReference := G;
    end;
  end;
end;

Нужный вам функционал лучше реализовать скриптами, DBFile не используйте - вы ведь не храните файлы в БД?. Храните в текстовом поле относительный путь. Для выбора файла используйте TOpenDialog, при записи пути в базу обрезайте его по своему алгоритму, а для последующего открытия - функцию OpenFile(), предварительно модифицировав путь из базы по вашему алгоритму.

1,096

(17 replies, posted in Russian)

chaoba wrote:
k245 wrote:

Про API вы правильно вопрос сформулируйте. Читал я вашу тему, не стал ничего писать (после шуток Владимира уже и добавить там нечего smile ).

Наверно очень смешно, рад, что повеселились. Описание или есть, или его нет.

Не обижайтесь, но не понятно, про какое именно API вы спрашиваете? У My Visual Database нет своего API. А если вы про какие-то другие системы спрашивали, то нужно уточнять, какие именно. Можно предположить, что вы имели ввиду API HTTP-сервера, и вам нужны примеры взаимодействия с ним, но мы же тут не загадки разгадываем, а делами занимаемся ))))

1,097

(5 replies, posted in Russian)

sibprogsistem wrote:

авторское право и потент являются результатами интеллектуальной деятельности, в общем как я понимаю, это одно и тоже...

это два совершенно разных понятия

1,098

(5 replies, posted in Russian)

В России не выдают патентов на программное обеспечение, но можно зарегистрировать авторское право. Однако, лично я не вижу в этом смысла.

https://blog.akorablev.ru/software-patent.html

https://юриствправе.рф/wp-content/uploads/2015/05/patents.jpg

1,099

(17 replies, posted in Russian)

chaoba wrote:

Я не жалею, что купил эту среду разработки. Возможно не во всем ее можно применить, жаль, что так и не нашел информации по API, но остальное, что приходилось делать - все было легко реализовано.

Про API вы правильно вопрос сформулируйте. Читал я вашу тему, не стал ничего писать (после шуток Владимира уже и добавить там нечего smile ).

1,100

(17 replies, posted in Russian)

juke.ivanov wrote:

в программе много багов . и времени уходит гораздо больше для создание простой формы . И платить деньги за сырую программу не вижу смысла. В программе я еще нашел два бага и поэтому программу удаляю не стоит она не денег не времени с ней разбираться . но задумка в целом я считаю не плохая удачи разработчикам. А все кто ей пользуется будьте внимательны в программе много багов . Удачи


Данный проект "живой": автор проекта постоянно наращивает функционал, ошибки исправляются, сообщество может помочь разобраться во всех тонкостях, а если надо, то и пожурить молодых пиратов. Не вижу ничего плохого в этой старой пиратской традиции smile


P.S. Две аксиомы программирования:


1. В любой программе есть как минимум один баг.
2. Любая программа может быть сокращена как минимум на одну инструкцию.


ВЫВОД:


Любую программу можно сократить до одной-единственной, не работающей инструкции.