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

enatechno

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

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

  • Посещение

  • Победитель дней

    26

Активность репутации

  1. Like
    enatechno отреагировална Равиль Зарипов (ZuBy) в Запрет нажатия на контролы внутри ScrollBox при прокручивании   
    для мобильных устройств есть специальное событие OnTap
     
    в случае с комбобокс оно не поможет а вот для кнопок самое то
  2. Like
    enatechno отреагировална Alex7wrt в Как выровнять текст в TMemo по центру по вертикали?   
    Нашел немного похожий вопрос на http://stackoverflow.com/questions/21836579/can-i-make-a-tmemo-size-itself-to-the-text-it-contains-firemonkey
     
    Используя код определения высоты TMemo:
    function get_memo_height(amemo:tmemo):single; var i:integer; astring: string; layout: ttextlayout; begin Layout := TTextLayoutManager.DefaultTextLayout.Create; astring:=''; for i:=0 to amemo.lines.count-1 do astring:=astring+amemo.lines[i]+chr(10); Layout.BeginUpdate; Layout.Text :=astring; Layout.WordWrap:= amemo.wordwrap; Layout.HorizontalAlign:= amemo.TextAlign; Layout.MaxSize:= PointF(amemo.width,maxint); Layout.VerticalAlign := TTextAlign.Leading; Layout.Font := amemo.Font; Layout.TopLeft := pointf(0,0); Layout.EndUpdate; result:=layout.textrect.bottom-amemo.Font.Size;; Layout.free; end; Memo.Height:=get_memo_height(Memo); в сочетании с 
    Memo.Align:= TAlignLayOut.VertCenter; Получаем эффект выравнивания текста Memo по центру вертикали родительского контрола
  3. Like
    enatechno получил реакцию от i.r.khayrullin в Сортировка с использованием функции TTreeView.Sort   
    По приложенному примеру:
    в MySortTree нужно TTreeViewItem вместо TListBoxItem. при работе с TListBox и TTreeVew (заполнение и пр.) рекомендую использовать .BeginUpdate и .EndUpdate. По проблеме:
    Так вроде показывает без фантомов:
    procedure TForm1.SortTreeItemsClick(Sender: TObject); begin TreeView1.BeginUpdate; try TreeView1.Sort(MySortTree); TreeView1.ExpandAll; finally TreeView1.EndUpdate; end; end; P.S. А Вы используете какое-то особое правило сортировки? Если нет, рекомендую просто использовать TreeView1.Sorted := true для автоматической сортировки в алфавитном порядке по тексту в айтемах.
  4. Like
    enatechno получил реакцию от Kitty в Сортировка с использованием функции TTreeView.Sort   
    По приложенному примеру:
    в MySortTree нужно TTreeViewItem вместо TListBoxItem. при работе с TListBox и TTreeVew (заполнение и пр.) рекомендую использовать .BeginUpdate и .EndUpdate. По проблеме:
    Так вроде показывает без фантомов:
    procedure TForm1.SortTreeItemsClick(Sender: TObject); begin TreeView1.BeginUpdate; try TreeView1.Sort(MySortTree); TreeView1.ExpandAll; finally TreeView1.EndUpdate; end; end; P.S. А Вы используете какое-то особое правило сортировки? Если нет, рекомендую просто использовать TreeView1.Sorted := true для автоматической сортировки в алфавитном порядке по тексту в айтемах.
  5. Like
    enatechno получил реакцию от Anatoliy в Печать на сетевом принтере   
    У нас тоже печать через базу данных. Отличие от описанного варианта только в том что база удаленная, а служба печати может быть установлена на любом клиентском компе с Windows, с которого и идет печать на любой принтер доступный с этого клиентского компа. При этом на клиенте служба может быть настроена для выбора только определенных заданий печати (например задания только определенного отдела или задания отправленные только с определенных терминалов).
  6. Like
    enatechno получил реакцию от osvirt в Печать на сетевом принтере   
    У нас тоже печать через базу данных. Отличие от описанного варианта только в том что база удаленная, а служба печати может быть установлена на любом клиентском компе с Windows, с которого и идет печать на любой принтер доступный с этого клиентского компа. При этом на клиенте служба может быть настроена для выбора только определенных заданий печати (например задания только определенного отдела или задания отправленные только с определенных терминалов).
  7. Like
    enatechno отреагировална zairkz в Печать на сетевом принтере   
    Первое что пришло в голову в виде "бреда", точнее так уже сделали))
    Но не знаю насколько вам подойдет такое решение.
    У нас есть сервер базы данных, на сервере понятно есть все данные необходимые для печати, принтер настроен на сервере, на сервере есть служба которая мониторит базу (таблицу) в которой если появилась новая команда для печати тогда служба формирует документ из данных базы с использованием FastReport, и кидает на принтер по умолчанию для печати.
    Сервер (а точнее комп Pentium DualCore, 2 gb RAM) на котором MySQL, Windows (хотя FastReport есть и для Linux (beta)) работает автономно уже 8-й месяц, и за это время не прикоснулись к нему ни разу (даже если честно очень странно)
  8. Like
    enatechno отреагировална Равиль Зарипов (ZuBy) в [Android] Как изменить цвет системного статус бара и разместить контролы под ним?   
    Тема оказалась настолько интересна что занялся ей подробней.
     
    Мы с zairkz убили много времени, чтобы понять как выкрасить в один цвет без полупрозрачности, взяв скриншот и фотошоп определили, что затемнение происходит на 40%
     
    Решение родилось само собой, затемнить цвет ToolBar'a на 40% и цвет выровняется.
    Казалось бы можно осветлить цвет для подложки и цвет тоже выровнится, но например белый или светлые цвета нельзя еще осветлить.
     

     
    также написал процедуру для определения высоты статус бара и панели навигации
    procedure androidGetBounds(out statusBar, navigationBar: Integer); {$IFDEF ANDROID} var KeyCharacterMap: JKeyCharacterMap; resourceID: Integer; ScreenService: IFMXScreenService; sScale: Single; {$ENDIF} begin navigationBar := 0; statusBar := 0; {$IFDEF ANDROID} if TOSVersion.Check(5, 0) then // вроде только работает с 5.0 ниже нет устройства проверить begin sScale := 1; if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then sScale := ScreenService.GetScreenScale; //получаем скейл resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('status_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then statusBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale); if not TJKeyCharacterMap.JavaClass.deviceHasKey(TJKeyEvent.JavaClass.KEYCODE_BACK) then // проверка на существование наэкранных кнопок или физических begin resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('navigation_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then navigationBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale); end; end; {$ENDIF} end; и в модуле FMX.Platform.Android нужно изменения внести (если вы используете измененный модуль для Intel'а)
    // Fix by Flying Wang & CallInUIThread( procedure begin if (not PlatformAndroid.GetFullScreen(nil)) and (SharedActivity.getWindow.getAttributes.Flags and TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN <> TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN) and (SharedActivity.getWindow.getAttributes.Flags and TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS <> TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS) // fix by ZuBy ... SystemBar.zip
  9. Like
    enatechno получил реакцию от masmat в Выгрузка/Загрузка картинки в Blob поле SQLLite под Android/iOS   
    когда-то делал так:
     
    aMStream := TMemoryStream.Create; // считываем в aMStream, потом записываем в параметр пишущего запроса: {$IF CompilerVersion >= 28} aQuery.Params[i].SetStream(aMStream, ftBlob, true); {$ELSE} aQuery.Params[i].LoadFromStream(aMStream, ftBlob, 0); {$ENDIF}
  10. Like
    enatechno получил реакцию от Vitaldj в Выгрузка/Загрузка картинки в Blob поле SQLLite под Android/iOS   
    когда-то делал так:
     
    aMStream := TMemoryStream.Create; // считываем в aMStream, потом записываем в параметр пишущего запроса: {$IF CompilerVersion >= 28} aQuery.Params[i].SetStream(aMStream, ftBlob, true); {$ELSE} aQuery.Params[i].LoadFromStream(aMStream, ftBlob, 0); {$ENDIF}
  11. Like
    enatechno отреагировална Равиль Зарипов (ZuBy) в TListViewHorz   
    Давно не хватало TListView в горизонтальной ориентации, например чтобы сделать вот такую картинку

     
    zairkz сделал стиль с применением 9-patch png "технологии"
     
    С помощью жестов показано как сделать "сквозной скрол"
    как писал dreamix
     
     
    P.S. по компоненту TListViewHorz, не успел все протестить как следует со всеми параметрами
    не правильно будет отображаться Header'ы и Поиск, основной функционал сохранен
    UPDATE:  LVStyledhorz.7z
  12. Like
    enatechno отреагировална Равиль Зарипов (ZuBy) в vkbdhelper - поднятие компонентов над клавиатурой   
    Привет Всем!
     
    vkbdhelper.pas
     
    Давно пользовался vkbdhelper'ом, но он был только для андроида.
    руки добрались и до этого, теперь его можно использовать и на IOS
     
    изменения
    * почистил uses секцию
    * убрал зависимость от платформ (кросс-платформенный)
    * добавил глобальную переменную VKOffset
     
    VKOffset - расстояние между контролом и клавиатурой
                     для тех случаев когда включены подсказки/автозамена
                     и контрол оказывается под доп. панелькой
     
    Не все клавиатуры включают доп. панели в свой размер!
    Например для IOS нужно всегда прибавлять 30-32 пикселя, панель с кнопкой Done перекрывает контрол
    {$IFDEF IOS} VKOffset := 31; {$ELSE} VKOffset := 0; // на свой вкус // не знаю как определить размер доп. панельки // когда она не входит в размер клавиатуры // и определить есть ли панелька вообще... {$ENDIF} vkbdhelper.zip
  13. Like
    enatechno отреагировална Равиль Зарипов (ZuBy) в При повороте экрана закрывается приложение, Delphi XE 10   
    файл AndroidManifest.template.xml
     
    блок activity должен иметь вот такой вид
    <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity" android:label="%activityLabel%" android:configChanges="orientation|keyboard|keyboardHidden|screenSize" android:launchMode="singleTask">
  14. Like
    enatechno отреагировална Равиль Зарипов (ZuBy) в [TBitmap] Загрузка изображений из интернета в приложение   
    idhttp1.Create(Application); - что это за бред?
    IdHTTP - это откуда взялось?
    никогда и никому этот код не показывай
     
    берем файлик во вложении подключаем в проекте и пишем
    with ListView1.Items.Add do begin   Text := 'Text';   Bitmap.LoadFromUrl('http://site.ru/icons/icon.png'); end; не проверял, но должно работать. не нужно пихать в поток, там итак уже используется
    FMX.Features.Bitmap.Helpers.zip
  15. Like
    enatechno отреагировална AngryOwl в Как свернуть форму, находящуюся в режиме FullScreen?   
    unit uHelpers; interface uses   FMX.Forms; type   TForm_Helper = class helper for TForm      procedure Minimize;      procedure SendToTaskbar;   end; implementation uses System.UITypes{$IFDEF MSWINDOWS}, Winapi.Windows, FMX.Platform.Win{$ENDIF}; { TForm_Helper } procedure TForm_Helper.Minimize; begin   Application.MainForm:= nil;   WindowState := TWindowState.wsMinimized; end; procedure TForm_Helper.SendToTaskbar; begin {$IFDEF MSWINDOWS}   SetWindowLong(WindowHandleToPlatform(Handle).Wnd, GWL_EXSTYLE,     GetWindowLong(WindowHandleToPlatform(Handle).Wnd, GWL_EXSTYLE) or WS_EX_APPWINDOW); {$ENDIF} end; end. у Вашей формы пишем
    type   TForm1 = class(TForm)   ........   protected     procedure CreateHandle; override;   private     ........   public   ......   end; implementation uses   uHelpers; {$R *.fmx} {это позволит сворачивать ваше окно на панель задач, независимо от количества окон в приложении} procedure TForm1.CreateHandle; begin   inherited CreateHandle;   SendToTaskbar; end; а Minimize свернет все как надо, независимо от того - какое у него "состояние".
  16. Like
    enatechno получил реакцию от zairkz в Цвета фона и шрифтов   
    Большинство визуальных контролов в FMX - наследники от TStyledControl (см. схему). Даже если вы не указываете стиль явно для этих контролов, они используют стиль по-умолчанию. Поэтому код для изменения цвета лейбла будет в рантайм такой:
    Label1.StyledSettings := Label1.StyledSettings - [TStyledSetting.FontColor]; Label1.TextSettings.FontColor := TAlphaColorRec.Red; А вот TText - не является стилизованным компонентом (см. ту же схему), поэтому задается проще:
    Text1.Color := TAlphaColorRec.Red;
  17. Like
    enatechno получил реакцию от rustam_d в Цвета фона и шрифтов   
    Большинство визуальных контролов в FMX - наследники от TStyledControl (см. схему). Даже если вы не указываете стиль явно для этих контролов, они используют стиль по-умолчанию. Поэтому код для изменения цвета лейбла будет в рантайм такой:
    Label1.StyledSettings := Label1.StyledSettings - [TStyledSetting.FontColor]; Label1.TextSettings.FontColor := TAlphaColorRec.Red; А вот TText - не является стилизованным компонентом (см. ту же схему), поэтому задается проще:
    Text1.Color := TAlphaColorRec.Red;
  18. Like
    enatechno получил реакцию от Равиль Зарипов (ZuBy) в Цвета фона и шрифтов   
    Большинство визуальных контролов в FMX - наследники от TStyledControl (см. схему). Даже если вы не указываете стиль явно для этих контролов, они используют стиль по-умолчанию. Поэтому код для изменения цвета лейбла будет в рантайм такой:
    Label1.StyledSettings := Label1.StyledSettings - [TStyledSetting.FontColor]; Label1.TextSettings.FontColor := TAlphaColorRec.Red; А вот TText - не является стилизованным компонентом (см. ту же схему), поэтому задается проще:
    Text1.Color := TAlphaColorRec.Red;
  19. Like
    enatechno получил реакцию от Vitaldj в Цвета фона и шрифтов   
    Большинство визуальных контролов в FMX - наследники от TStyledControl (см. схему). Даже если вы не указываете стиль явно для этих контролов, они используют стиль по-умолчанию. Поэтому код для изменения цвета лейбла будет в рантайм такой:
    Label1.StyledSettings := Label1.StyledSettings - [TStyledSetting.FontColor]; Label1.TextSettings.FontColor := TAlphaColorRec.Red; А вот TText - не является стилизованным компонентом (см. ту же схему), поэтому задается проще:
    Text1.Color := TAlphaColorRec.Red;
  20. Like
    enatechno получил реакцию от AngryOwl в Цвета фона и шрифтов   
    Большинство визуальных контролов в FMX - наследники от TStyledControl (см. схему). Даже если вы не указываете стиль явно для этих контролов, они используют стиль по-умолчанию. Поэтому код для изменения цвета лейбла будет в рантайм такой:
    Label1.StyledSettings := Label1.StyledSettings - [TStyledSetting.FontColor]; Label1.TextSettings.FontColor := TAlphaColorRec.Red; А вот TText - не является стилизованным компонентом (см. ту же схему), поэтому задается проще:
    Text1.Color := TAlphaColorRec.Red;
  21. Like
    enatechno получил реакцию от Равиль Зарипов (ZuBy) в При установки WordWrap у TListViewItem.Objects.Text неверно отображается текст в Android   
    Это объект типа TTextLayout (из FMX.TextLayout).
  22. Like
    enatechno получил реакцию от Камышев Александр в Ширина хедеров после OnResize не обновляется   
    Не помню точно, но вроде на дельфи так решается:
    Grid1.BeginUpdate; ... //изменение ширины колонок Grid1.EndUpdate;
  23. Like
    enatechno отреагировална Равиль Зарипов (ZuBy) в Неказистый файл базы данных   
    Указать нужно кодировку, TEncoding.UTF8 в процедуре загрузки файла, вторым параметром
  24. Like
    enatechno отреагировална AngryOwl в Типовые приемы работы с TListView   
    var     newLine : TListViewItem;   begin     newLine := {ваш_TListView}.Items.Add;     newLine.purpose:= TListItemPurpose.Header;     newLine.Height := 1;     newLine.Text := '';   end; вот Вам "разделитель")
     
    P.S. А в остальном, думаю, что слишком много вопросов сразу... Потому и не отвечают.
    Вот у меня, например, нет времени отвечать на все - в итоге не отвечу совсем. (просто именно этот ответ занял пару минут на все)
    А иногда было бы можно, если бы вопрос был кратко и четко сформулирован.
  25. Like
    enatechno получил реакцию от Kitty в Как програмно изменить стиль в RAD Studio 10 Seatle.   
    http://delphifmandroid.blogspot.com/2013/11/firemonkey.html
×
×
  • Создать...