Перейти к содержанию
Fire Monkey от А до Я

striker

Пользователи
  • Постов

    25
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные striker

  1. Всем привет!

    Глупый вопрос.

    Есть в БД таблица, допустим clients, в ней поля: ID, FIO.

    Я заполняю Comboboх строчками из поле FIO.

    Как мне быстро узнавать ID в БД у выбранной FIO?

    Сейчас фильтрую Query по значению, которое находится в выбранной строчке Combobox, но это не дело же...

     

  2. 18 часов назад, slav_z сказал:

    пример во вложении.

    Project.zip

    Даже в Вашем примере при первом срабатывании таймера если нажать на кнопку в маленьком окне, разворачивается второе главное окно.

    При последующих срабатываниях уже всё хорошо, главная форма не разворачивается.

  3. slav_z,

    спасибо, но не получилось.

    Всё так же, либо я как-то не так применяю.

    Создал процедуру, объявил её.

    Она вызывается в OnClose? Или как?

     

    7 часов назад, #WAMACO сказал:

    Используйте механизм уведомлений, которые всплывают внизу, в трее.

    Не подскажете какой именно? TnTRayIcon?

     

    7 часов назад, dmokrushin123 сказал:

    Как понял вопрос не в закрытии всплывающего окна, а в том что показывается основное окно.

    Каким образом у вас вообще показывается всплывающее окно если приложение свернуто (минимизировано) ?

    Для того чтобы увидеть показать всплывающее окно нужно развернуть приложение (в этом случае увидите и главную форму)

    У меня сразу раскрывается главное окно, принудительно я его не разворачиваю.

     

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

  4. Всем привет!
    Delphi XE6 FMX
    Есть приложение, главная форма на весь экран.
    Пользователь сворачивает его.
    Появляется всплывающее сообщение по таймеру - маленькая форма (Form1.Show).
    Проблема:
    При свернутом приложении когда появляется сообщение, закрываешь эту маленькую форму и разворачивается главное окно программы, а нужно просто закрыть уведомление и дальше работать с другими программами.

    Как можно решить? Спасибо!

  5. MySQL, FireDac, XE6, FMX, Windows

    Есть Query, Grid, по двойному щелчку на гриде открывается форма редактирования записи.

    Update делается по ID из Query.

    Так вот, на одном компе иногда что-то происходит и обновляется не та запись, а соседняя...

    Форма модальная. Интересно, в какой момент "соскакивает" курсор на записи? Или что-то ещё.

    Лучше конечно считывать ID в переменную при открытии формы и потом обращаться к ней, а я при Update обращаюсь к Query...

  6. В 23.12.2017 в 15:05, krapotkin сказал:

    чем плох просто список ключей? хочешь добавил, хочешь убавил. и отрисовка селектед все равно должна по какому-то списку идти

    Не понял что такое просто список ключей... :ph34r:

    Точнее в интерфейсе как это будет.

  7. Всем привет!
    Задача: в Grid записи из БД, FDQuery.

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

    Никак не могу добиться.

    Неужели лепить временную таблицу с доп.полем (выделено/нет) чтобы чекколумн привязать?

    Подскажите, как можно реализовать это?

  8. if (zqOneDay5.FieldByName('TwoHoursKind').Value=2) and (Column = TGrid(Sender).Columns[1]) then
      begin
        TextRect := Bounds;
        TextRect.Left := TextRect.Left+2;
        TextRect.Right:= TextRect.Right-1;
        TextRect.Top := TextRect.Top-(TextRect.Bottom-TextRect.Top)+1;
        TextRect.Bottom :=TextRect.Bottom-2;
        TextRect.Inflate(-HorzTextMargin, -VertTextMargin);
        Canvas.Stroke.Thickness:=2;
        Canvas.Stroke.Color:=TAlphaColorRec.Blue;
    
        Canvas.DrawRect(TextRect, 0, 0, AllCorners, 1);
        Canvas.Stroke.Thickness:=1; 
    
           TGrid(Sender).DefaultDrawColumnCell(Canvas, Column, Bounds, Row, Value, State);
      end;

    Вот, что получилось самое лучшее.

    Как убрать белую линию-разделитель ячеек по горизонтали?

     

    Безымянный.png

  9. Всем привет!
    Нужен совет.
    Есть Grid, в нем расписание дня.
    В БД каждая строка это отдельная запись.
    Нужно как-то визуально сделать подобие объединения ячеек в Excel.
    Т.е. нужно занять расписание на 2 часа.

    При этом функционал по событиям для строки "второго часа" должен быть недоступен.
    Может хотя бы границу стирать, т.е. оставлять значение в верхней ячейки, а нижнюю просто не отображать.
    Как это лучше сделать?

    FMX, Windows, Delphi XE6, MySQL
     

    01.PNG

  10. Нашел...

    У Query в событии AfterScroll у меня обновлялись связанные таблицы...

    Это и вешало всё.

    Перенес на Grid.OnSelectCell

    Как проходил мимо этого - непонятно.

    Время кстати такое было:
     

    Цитата

    Начало: 0 ms
    Конец: 252 ms
    Последняя запись: 364 ms
    Всего записей: 261
    Старт заполнения StringGrid: 365 ms
    Финиш заполнения StringGrid: 28741 ms

    В Delphi 7 алгоритм заполнения через DataSource другой? Делал там аналогично - такого не наблюдается.

    enatechno, krapotkin, спасибо большое за участие!

  11. enatechno, спасибо!

    Действительно в Вашем примере и у меня моментально загружается...

    Проблема не в Grid и не в запросе, а получается в их соединении.

    Попробую ещё раз с нуля создать другой запрос и другой Grid. Непонятно...

  12. kraporkin, спасибо!

    Проблема не решилась. Изначально я убрал LiveBindings , т.к. думал тормозит заливка грида из-за него.
    А заливка даже ручная, какую я написал всё-равно тормозит и заливает в грид секунд 15-20...
     

    MainForm.StringGrid1.BeginUpdate;
    try
    MainForm.qClients.First;
    for i:=0 to MainForm.qClients.RecordCount-1 do
      begin
        MainForm.StringGrid1.RowCount:=MainForm.StringGrid1.RowCount+1;
        MainForm.StringGrid1.Cells[0, i] :=MainForm.qClients.FieldByName('FAM').AsString;
        MainForm.StringGrid1.Cells[1, i] :=MainForm.qClients.FieldByName('IM').AsString;
        MainForm.StringGrid1.Cells[2, i] :=MainForm.qClients.FieldByName('ID').AsString;
        MainForm.zqClients.Next;
      end;
    
    finally
        MainForm.StringGrid1.EndUpdate;
    end;

     

  13. Это не так удобно. Конечно можно написать свой обработчик/компонент чтобы к любому гриду так цепляться, но я пока ещё не достиг такого уровня ))

    Тем более если были стандартные решения (тот же DataSource)

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

    LiveBindings действительно загрузку в Grid вешает. Заливается Grid руками намного быстрее.

    Приму ещё советы по упрощению этих проблем ))

     

  14. Посмотрел, на Берлин пока переходить не вариант... куча несостыковок.

    Весь мозг сломал как в этой версии XE6 обойтись без LiveBindings...

    Как руками заполнить Grid?

    Есть Query и Grid.

    Пробовал по-разному - то одного не знает, то другого

  15. Нагуглил тут про FMX.Types.GlobalUseDirect2D := False;

    Не помогло. Что ещё отключить можно?

    Собственно приложение задумывалось быть кросслпатформенным. Но сейчас используется только под Windows.

    Так что все "навороты" можно поотключать, если в этом дело.

     

  16. Добрый день!
    Работаю с MySQL
    Подключаюсь через FireDac.
    FDQuery+FDConnecton+Bind+Grid

    Запрос выполняется моментально, но как только подключаю Grid - начинает висеть. Grid заполняется очень долго - секунд 12-15.
    Причем результат запроса - всего 230 строк, хоть и join присутствует.
    Куда копать? Может дело быть именно в FMX?

  17. Всем привет!

    Я новичок в FMX.

    Сталкиваюсь с проблемами различий с VCL.

    Некоторые проблемы:

    1) Текст в edit мышью невозможно выделить, выделение скачет.

    Думаю связано с заточкой под тач, как починить и возможно ли - нигде не нашёл.

    2) Покрасить грид (строчку) в зависимости от значения можно?

    В VCL это делается OnDrawColumnCell

    Спасибо!

×
×
  • Создать...