-
Постов
181 -
Зарегистрирован
-
Посещение
-
Победитель дней
26
Активность репутации
-
enatechno отреагировална Равиль Зарипов (ZuBy) в Запрет нажатия на контролы внутри ScrollBox при прокручивании
для мобильных устройств есть специальное событие OnTap
в случае с комбобокс оно не поможет а вот для кнопок самое то
-
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 по центру вертикали родительского контрола
-
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 для автоматической сортировки в алфавитном порядке по тексту в айтемах.
-
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 для автоматической сортировки в алфавитном порядке по тексту в айтемах.
-
enatechno получил реакцию от Anatoliy в Печать на сетевом принтере
У нас тоже печать через базу данных. Отличие от описанного варианта только в том что база удаленная, а служба печати может быть установлена на любом клиентском компе с Windows, с которого и идет печать на любой принтер доступный с этого клиентского компа. При этом на клиенте служба может быть настроена для выбора только определенных заданий печати (например задания только определенного отдела или задания отправленные только с определенных терминалов).
-
enatechno получил реакцию от osvirt в Печать на сетевом принтере
У нас тоже печать через базу данных. Отличие от описанного варианта только в том что база удаленная, а служба печати может быть установлена на любом клиентском компе с Windows, с которого и идет печать на любой принтер доступный с этого клиентского компа. При этом на клиенте служба может быть настроена для выбора только определенных заданий печати (например задания только определенного отдела или задания отправленные только с определенных терминалов).
-
enatechno отреагировална zairkz в Печать на сетевом принтере
Первое что пришло в голову в виде "бреда", точнее так уже сделали))
Но не знаю насколько вам подойдет такое решение.
У нас есть сервер базы данных, на сервере понятно есть все данные необходимые для печати, принтер настроен на сервере, на сервере есть служба которая мониторит базу (таблицу) в которой если появилась новая команда для печати тогда служба формирует документ из данных базы с использованием FastReport, и кидает на принтер по умолчанию для печати.
Сервер (а точнее комп Pentium DualCore, 2 gb RAM) на котором MySQL, Windows (хотя FastReport есть и для Linux (beta)) работает автономно уже 8-й месяц, и за это время не прикоснулись к нему ни разу (даже если честно очень странно)
-
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
-
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} -
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} -
enatechno отреагировална Равиль Зарипов (ZuBy) в TListViewHorz
Давно не хватало TListView в горизонтальной ориентации, например чтобы сделать вот такую картинку
zairkz сделал стиль с применением 9-patch png "технологии"
С помощью жестов показано как сделать "сквозной скрол"
как писал dreamix
P.S. по компоненту TListViewHorz, не успел все протестить как следует со всеми параметрами
не правильно будет отображаться Header'ы и Поиск, основной функционал сохранен
UPDATE: LVStyledhorz.7z
-
enatechno отреагировална Равиль Зарипов (ZuBy) в vkbdhelper - поднятие компонентов над клавиатурой
Привет Всем!
vkbdhelper.pas
Давно пользовался vkbdhelper'ом, но он был только для андроида.
руки добрались и до этого, теперь его можно использовать и на IOS
изменения
* почистил uses секцию
* убрал зависимость от платформ (кросс-платформенный)
* добавил глобальную переменную VKOffset
VKOffset - расстояние между контролом и клавиатурой
для тех случаев когда включены подсказки/автозамена
и контрол оказывается под доп. панелькой
Не все клавиатуры включают доп. панели в свой размер!
Например для IOS нужно всегда прибавлять 30-32 пикселя, панель с кнопкой Done перекрывает контрол
{$IFDEF IOS} VKOffset := 31; {$ELSE} VKOffset := 0; // на свой вкус // не знаю как определить размер доп. панельки // когда она не входит в размер клавиатуры // и определить есть ли панелька вообще... {$ENDIF} vkbdhelper.zip
-
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"> -
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
-
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 свернет все как надо, независимо от того - какое у него "состояние".
-
enatechno получил реакцию от zairkz в Цвета фона и шрифтов
Большинство визуальных контролов в FMX - наследники от TStyledControl (см. схему). Даже если вы не указываете стиль явно для этих контролов, они используют стиль по-умолчанию. Поэтому код для изменения цвета лейбла будет в рантайм такой:
Label1.StyledSettings := Label1.StyledSettings - [TStyledSetting.FontColor]; Label1.TextSettings.FontColor := TAlphaColorRec.Red; А вот TText - не является стилизованным компонентом (см. ту же схему), поэтому задается проще:
Text1.Color := TAlphaColorRec.Red; -
enatechno получил реакцию от rustam_d в Цвета фона и шрифтов
Большинство визуальных контролов в FMX - наследники от TStyledControl (см. схему). Даже если вы не указываете стиль явно для этих контролов, они используют стиль по-умолчанию. Поэтому код для изменения цвета лейбла будет в рантайм такой:
Label1.StyledSettings := Label1.StyledSettings - [TStyledSetting.FontColor]; Label1.TextSettings.FontColor := TAlphaColorRec.Red; А вот TText - не является стилизованным компонентом (см. ту же схему), поэтому задается проще:
Text1.Color := TAlphaColorRec.Red; -
enatechno получил реакцию от Равиль Зарипов (ZuBy) в Цвета фона и шрифтов
Большинство визуальных контролов в FMX - наследники от TStyledControl (см. схему). Даже если вы не указываете стиль явно для этих контролов, они используют стиль по-умолчанию. Поэтому код для изменения цвета лейбла будет в рантайм такой:
Label1.StyledSettings := Label1.StyledSettings - [TStyledSetting.FontColor]; Label1.TextSettings.FontColor := TAlphaColorRec.Red; А вот TText - не является стилизованным компонентом (см. ту же схему), поэтому задается проще:
Text1.Color := TAlphaColorRec.Red; -
enatechno получил реакцию от Vitaldj в Цвета фона и шрифтов
Большинство визуальных контролов в FMX - наследники от TStyledControl (см. схему). Даже если вы не указываете стиль явно для этих контролов, они используют стиль по-умолчанию. Поэтому код для изменения цвета лейбла будет в рантайм такой:
Label1.StyledSettings := Label1.StyledSettings - [TStyledSetting.FontColor]; Label1.TextSettings.FontColor := TAlphaColorRec.Red; А вот TText - не является стилизованным компонентом (см. ту же схему), поэтому задается проще:
Text1.Color := TAlphaColorRec.Red; -
enatechno получил реакцию от AngryOwl в Цвета фона и шрифтов
Большинство визуальных контролов в FMX - наследники от TStyledControl (см. схему). Даже если вы не указываете стиль явно для этих контролов, они используют стиль по-умолчанию. Поэтому код для изменения цвета лейбла будет в рантайм такой:
Label1.StyledSettings := Label1.StyledSettings - [TStyledSetting.FontColor]; Label1.TextSettings.FontColor := TAlphaColorRec.Red; А вот TText - не является стилизованным компонентом (см. ту же схему), поэтому задается проще:
Text1.Color := TAlphaColorRec.Red; -
enatechno получил реакцию от Равиль Зарипов (ZuBy) в При установки WordWrap у TListViewItem.Objects.Text неверно отображается текст в Android
Это объект типа TTextLayout (из FMX.TextLayout).
-
enatechno получил реакцию от Камышев Александр в Ширина хедеров после OnResize не обновляется
Не помню точно, но вроде на дельфи так решается:
Grid1.BeginUpdate; ... //изменение ширины колонок Grid1.EndUpdate; -
enatechno отреагировална Равиль Зарипов (ZuBy) в Неказистый файл базы данных
Указать нужно кодировку, TEncoding.UTF8 в процедуре загрузки файла, вторым параметром
-
enatechno отреагировална AngryOwl в Типовые приемы работы с TListView
var newLine : TListViewItem; begin newLine := {ваш_TListView}.Items.Add; newLine.purpose:= TListItemPurpose.Header; newLine.Height := 1; newLine.Text := ''; end; вот Вам "разделитель")
P.S. А в остальном, думаю, что слишком много вопросов сразу... Потому и не отвечают.
Вот у меня, например, нет времени отвечать на все - в итоге не отвечу совсем. (просто именно этот ответ занял пару минут на все)
А иногда было бы можно, если бы вопрос был кратко и четко сформулирован.
-
enatechno получил реакцию от Kitty в Как програмно изменить стиль в RAD Studio 10 Seatle.
http://delphifmandroid.blogspot.com/2013/11/firemonkey.html