-
Постов
5 -
Зарегистрирован
-
Посещение
Весь контент Николай_1988
-
ListView нестандартное расположение ScrollBar'a
Николай_1988 ответил Николай_1988 вопрос в TListView
Всем спасибо, разобрался procedure UpdateListSubSection;varid, Subsection : string;begin F_General.LV_SubSection.BeginUpdate; if F_General.LV_SubSection.Items.Count <> 0 then F_General.LV_SubSection.Items.Clear; While not F_General.Qry.Eof do begin SubSection := F_General.Qry.FieldByName('N_subsection').AsString; FCanUpdate := False; LItem := F_General.LV_SubSection.Items.Add; LItem.Data['SubSection'] := SubSection; FCanUpdate := True; F_General.LV_SubSection.Adapter.ResetView(LItem); F_General.Qry.Next; end; F_General.LV_SubSection.EndUpdate; F_General.Qry.Close;end; -
Здравствуйте, коллеги! Подскажите, если не сложно, в чем может быть причина размещения скролла у LV не справа, как обычно, а в непонятной области и мелкого размера. Список формируется по примеру с данного форума Если схожий проект, на основании которого этот делал. Там работает все как должно. А тут уже все перепробовал, стиль удалял и прочее. Создаю пустой проект, кидаю LV, заполняю. Все нормально, скролл в родном месте. Все что связанно с данным компонентом: var FCanUpdate: Boolean; LItem: TListViewItem; ... F_General.Qry.SQL.Text:='SELECT N_subsection FROM N_subsection'; F_General.Qry.Open; UpdateListSubSection; ... procedure UpdateListSubSection; var id, Subsection : string; begin F_General.LV_SubSection.BeginUpdate; if F_General.LV_SubSection.Items.Count <> 0 then F_General.LV_SubSection.Items.Clear; While not F_General.Qry.Eof do begin SubSection := F_General.Qry.FieldByName('N_subsection').AsString; FCanUpdate := False; LItem := F_General.LV_SubSection.Items.Add; LItem.Data['SubSection'] := SubSection; FCanUpdate := True; F_General.LV_SubSection.Adapter.ResetView(LItem); F_General.Qry.Next; end; F_General.Qry.Close; end; procedure TF_General.LV_SubSectionUpdatingObjects(const Sender: TObject; const AItem: TListViewItem; var AHandled: Boolean); var LText: TListItemText; h: Integer; begin if not FCanUpdate then Exit; h := 0; //подраздел LText := AItem.Objects.FindObjectT<TListItemText>('SubSection'); if LText = nil then begin LText := TListItemText.Create(AItem); LText.Name := 'SubSection'; LText.PlaceOffset.X := 20; LText.PlaceOffset.Y := h; LText.SelectedTextColor := WhiteColor; LText.TextColor := WhiteColor; LText.TextAlign := TTextAlign.Leading; LText.TextVertAlign := TTextAlign.Leading; LText.Font.Size := 15; // LText.Font.Style := [TFontStyle.fsBold]; LText.Font.Family:='JhengHei UI'; end; LText.Width := (Sender as TListView).Width - 50; LText.Text := AItem.Data['SubSection'].AsString; LText.Height := 27; h := Round(h + LText.Height); AItem.Height := h+3; AHandled := True; end;
-
Благодарю, решил немного иначе ) Создается лист вдвое шире чем изначальный и в него пихаются два битмапа. Если документов нечетное количество, суется пустой. Далее это дело переворачивается на 90 градусов и сохраняется (посылается на печать). Профит. А5 готов ))
-
Здравствуйте, коллеги! Нужна ваша помощь. Перерыл кучу гайдов, не нашел ответа на волнующий вопрос. Если ниженаписаное выглядит уныло, прошу не тролить, учусь только )) Приложение для Windows на FM. На основании png-шного шаблона с помощью canvas, накидывает на него строки в определенные места и сохраняет в папке с ехе. В зависимости от диапазона вводимых дат создается несколько однотипных изображений 1_0, 1_1, 1_2 и т.д. (я художник, я так вижу) просто с разными датами и в цикле посылается на печать каждый файл следующим образом: var SrcRect, DestRect: TRectF; DateCount, i : integer; IMG:TImage; begin IMG:=TImage.Create(nil); DateCount := DaysBetween(DE_Order.Date,DE_Order2.Date); //получаем количество дней между датами for I := 0 to DateCount do ListCreate(DE_Order.Date+i,i); //процедура создания png. Втыкает дату в шаблон и сохраняет документ как 1_i if PrintDialog1.Execute then //После выбора принтера begin for i := 0 to DateCount do //отправляем каждый файл в очередь печати напрямую в принтер begin Printer.BeginDoc; SrcRect.Left := 0; SrcRect.Top := 0; SrcRect.Right := 2481; SrcRect.Bottom := 3508; IMG.Bitmap.LoadFromFile(PChar('1_'+IntToStr(i)+'.png')); DestRect := TRectF.Create(0, 0, 4962, 7016); //тут я так и не понял, но методом подгона выяснилось, что без увеличения в 2 раза значений SrcRect нормально печатать не будет. Но это не важный момент Printer.Canvas.DrawBitmap(Img.Bitmap, SrcRect, DestRect, 1); Printer.EndDoc; end; end; end; Вот и сам вопрос.. Возникла задача.. Печатать все эти документы в А5 формате по 2 листа на странице. Если делать все руками, можно в папке выделить все изображения - на печать. Там и можно настроить 2 на стр, 4 на странице и прочее. Как программно это можно реализовать? Заранее огромное спасибо!
-
Здравствуйте, отцы и боги fm! Подскажите пожалуйста новичку..? Перерыл все, что мог, ответа не нашел. Тыкните пожалуйста носом, если есть какая-нибудь статья. Коротко о моей задаче. Приложение для андройда. Из забитого списка с БД формируется счет с использованием загруженного в TImage изображения (что-то вроде листа А4 с шапкой фирмы) и Canvas, накидывающего на него реквизиты, список товаров, сумму и прочее. С помощью ShowShareSheetAction1.Bitmap.Assign(IMG.Bitmap) отправляется клиенту. Проблема возникла, когда список товаров был больше, чем задумано. Ладно, через условия (if количество товаров > например, 60 then создаем динамический image и записываем остатки туда) можно перекидывать. Но, как отправить сразу эти 2 TImage? Пробовал ShowShareSheetAction1.Bitmap.Assign(IMG.Bitmap); ShowShareSheetAction1.Bitmap.Assign(IMG2.Bitmap); Отправляет последнюю запись. Пробовал что-то вроде: ShowShareSheetAction1.Bitmap.Assign(IMG1.Bitmap, IMG2.Bitmap); Выдает, естественно, ошибку. Это как-нибудь вообще можно реализовать? Может, есть какая-нибудь альтернатива? Или, как в примерах выше, путем сохранения этих файлов в память и последующего присоединения?
- 23 ответа
-
- JIntent
- ACTION_SEND
-
(и ещё 1 )
C тегом: