у комбобокса нет имени, и найти его можно только полным перебором компонентов, но у меня не находит его

у комбобокса нет имени, и найти его можно только полным перебором компонентов.

for i := 0 to frmdbCoreLogin.componentCount - 1 do
begin
  if frmdbCoreLogin.Components[i] is TdbCombobox then
  begin
     TdbCombobox(frmdbCoreLogin.Components[i]).Sorted := True;
  end;
end;

так не работает, IF не находит компонент класс которого TdbCombobox

Подскажите как отсортировать выпадающий список в дефолтном окне авторизации.
как то так наверное TCombobox(frmdbCoreLogin.edLogin).Sorted := True , но имя объекта явно не то.


P.S.: Хотел прикрутить Component Explorer  чтобы посмотреть имена полей в окне авторизации но не получается, т.к. нет процедуры Combo_GetFormList.

Подскажите как побороть искажение масштаба при масштабирование windows на 125 % в дефолтном окне авторизации

Установил в ProgramData, открывается работает, но при сохранении не может записать в ini.
Ищем варианты дальше

UPD:

В общем устанавливаю в ProgramData.
Для settings.ini в файле создания установщика добавил "Permissions: everyone-full".
Ну и до кучи добавил PrivilegesRequired=admin.
Ярлыки у всех создаются(в commondesktop)

всё отлично.

Там mysql база, но при запуске ругается на недостаток прав(видно что-то пытается записать) , если только всю программу кидать в общие документы

а можно ли установить программу для всех пользователей, {userappdata} это только для одного пользователя, да и HKCU тоже.

у меня не получается пока

Ну вот опять столкнулся с непонятным.

Есть на вкладке компонент календарь(2 штуки) и , по текстовое поле memo.
По нажатию на кнопку данные с этих полей должны записываться в базу, но если в календаре ничего не выбрали то данные с календаря не должны попадать в базу, а там(на календаре) постоянно сегодняшняя дата.

Как проверить выбрана ли дата?  или такое только в DateTimePicker возможно?

Добрый день!

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

Это баг или фича, или рукожопство?

При развороте на весь экран поле как и было заданно растягивается до краёв.

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

Ps: я всего 4 дня с программой разбираюсь.

Добрый день.

Использую встроенную систему управления доступом и активно использую роли.
Хочется скрыть окно подключения к Mysql, это реально?

12

(8 replies, posted in FAQ)

Спасибо за наводку, я сам виноват что не додумался.

Для обработчика OnAfterSort надо свою функцию делать, с большим количеством аргументов, а я прописывал то же самое то и для OnChange т.е. frmMain_gridOrders_OnChange.

13

(8 replies, posted in FAQ)

Да, функцию вызываю из событий OnChange и OnAfterSort:

procedure frmMain_gridOrders_OnChange (Sender: string);
begin
  ColorRowGrid(frmMain.gridOrders,clBtnFace,clYellow);
end;

Которая в свою очередь вызывает

procedure ColorRowGrid (Grid:TdbStringGridEx;ColorEven,ColorOdd:TColor);
//Grid - Таблица для раскрашивания (Form1.TableGrid1)
//ColorEven - цвет четных строк
//ColorOdd - цвет нечетных строк
var
   iRow ,c: integer;
   q, iCol: integer;
begin
    Grid.BeginUpdate;
    c := Grid.RowCount - 1;
    q := Grid.Columns.Count-1;
    for iRow := 0 to c do
        for iCol := 0 to q do
        begin
            if iRow mod 2 = 0 then Grid.Cell[iCol,iRow].Color := ColorEven
            else
            Grid.Cell[iCol,iRow].Color := ColorOdd;
        end;
end;

из OnChange отрабатывает нормально,
а если использовать вызов frmMain_gridOrders_OnChange из OnAfterSort
и отсортировать по другому столбцу то появляется ошибка:

List index out of bounds (1)
Script position: 113:36

и подсвечивается строка

if iRow mod 2 = 0 then Grid.Cell[iCol,iRow].Color := ColorEven

как то так

14

(8 replies, posted in FAQ)

А как перестроить цвета после изменения сортировки по столбцу?

Если использовать как в примере alex842 то при сортировки по какой либо колонке появляется ошибка.
Функцию вешаю на событие OnChange и OnAfterSort/

k245 wrote:

Привет jean.brezhonek, 0anion0 !

Решение рабочее, но я рекомендую получать данные одним запросом

var
  tmpDataSet: TDataSet;
  tmpSQL: string;
...
  // один запрос, к той же таблице, что отображается в табличном представлении на форме
  tmpSQL :=  'SELECT table1.Field1  data1, table1.Field2 data2, table2.Field1 data3 ... '+ // нужные данные с алиасами для полей
    ' FROM table 1 LEFT JOIN table2 .... '+ // главная таблица и остальные по зависимостям (если есть)
    ' WHERE table1.id = '+IIntToStr(Form1.TableGrid1.dbItemID); // фильтр по главной таблице
  SQLQuery(tmpSQL,tmpDataSet);
  // нужные данные в датасете, вытаскиваем по алиасам
  Form1.Label1.Caption := tmpDataSet.FieldByName('data1').asString;
  Form1.Label2.Caption := tmpDataSet.FieldByName('data2').asString;
  ...
  // TODO: эту часть можно сделать циклом, если использовать соглашение по наименованию компонентов отображения и алиасов
  Form1.LabelN.Caption := tmpDataSet.FieldByName('dataN').asString;
  // обязательно освобождаем ресурсы
  tmpDataSet.Free;

Кстати да, одним запросом будет лучше. Благодарю.
но у меня в там есть Null, мне кажется это помешает.

jean.brezhonek wrote:

Hello 0anion0

Here is the code I use to display the different data on the right side of the screen.
If you have different tables but in relation to each other (relationship), you will have to use the Left Outer Join (SQL) statement to retrieve the different elements.
This is the best solution: create independent tables that have become relational.
By clicking on a cell of the grid, all the elements concerning a flower (this is my case in this example) will be brought together to form the right panel.
Similarly, if you use the arrows to navigate the grid, add this same code behind the OnKeyUp and OnKeyDown statements.

See in attachement, my code.
Hope this can help you.

JB

I figured it out a little myself, but thanks for the example, it came in handy for me

jean.brezhonek wrote:

Hello Oanion0

Do you mean something like this ? (See this attachment)

JB

Yes.

Hi all!

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

Вопрос, как вообще синхронизировать данные с правой стороны с тем что я выбираю в гриде. Как подгружать данные в правую колонку относительно id от объекта и грида в левой?