Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];

Вниз

Извращения, или может можно так делать?   Найти похожие ветки 

 
MVova   (2004-01-14 17:28) [0]

Сначала задачка.

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


 
RealRascal   (2004-01-14 17:31) [1]

не понял. кАкАвА цель этих хитроумно-находчивых действий?


 
RealRascal   (2004-01-14 17:33) [2]

А, понял, caption к прогрессбару хошь?
Отчегож нельзя-то?


 
МАКСЮХА   (2004-01-14 17:35) [3]

На его, это самое ПрогрессБар можно что угодно поставить...
А ишо лучше на нем ЕТО нарисовать...


 
Юрий Зотов   (2004-01-14 17:41) [4]

Никаких извращений. Задачка совершенно элементарная и использующаяся сплошь и рядом.

procedure TForm1.CreateForm(Sender: TObject);
begin
Label1 := TLabel.Create(ProgressBar1);
with Label1 do
begin
Parent := ProgressBar1;
Top := (ProgressBar1.Height - Height) div 2;
UpdateProgressValue
end
end;

procedure TForm1.UpdateProgressValue;
begin
with Label1 do
begin
Caption := IntToStr(ProgressBar1.Position);
Left := (ProgressBar1.Width - Width) div 2
end
end;


 
RealRascal   (2004-01-14 17:42) [5]

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


 
Юрий Зотов   (2004-01-14 17:48) [6]

> RealRascal © (14.01.04 17:42) [5]

Если просто положить мышкой, то да. И не "почему-то", а именно так и должно быть. А вот если положить в коде, и положить правильно, то все будет ОК.


 
RealRascal   (2004-01-14 17:50) [7]


> Юрий Зотов © (14.01.04 17:41) [4]
> Никаких извращений. Задачка совершенно

а десигн тиам почему-то RealRascal © (14.01.04 17:42) [5].
а можно просто после привязки у лэйбла поставить свойство алигн в алклиент, алигмент в тасентер, а лэйоут в тлсентер?(ну чтобы отцентровать единожды и навсегда)


 
RealRascal   (2004-01-14 17:53) [8]


> Юрий Зотов © (14.01.04 17:48) [6]

а понял, в десигн тайме он его своим парентом не считает...


 
Юрий Зотов   (2004-01-14 18:07) [9]

> RealRascal © (14.01.04 17:53) [8]

Совершенно верно. У стандартного ProgressBar"а не выставлен флаг csAcceptControls, поэтому в design-time его нельзя сделать Parent"ом (в отличие от TPanel, TGroupBox и пр). А в коде - запросто.

Насчет Align - можно. Возможно, так будет даже лучше.


 
MVova   (2004-01-14 18:09) [10]


> Юрий Зотов © (14.01.04 17:41) [4]

Я сначала так и делал, а потом подредактировал dfm.
и в десигн тайме лейба легла на прогресс бар.


 
MVova   (2004-01-14 18:14) [11]

А можно кнопку на кнопку положить, но там цирк получается :)


 
Семен Сорокин   (2004-01-14 18:15) [12]

как альтернатива ProgressBar"у - TGauge на закладке Samples уже с Label"ом


 
Юрий Зотов   (2004-01-14 18:44) [13]

> MVova © (14.01.04 18:09) [10]

Ничего удивительного - Parent был назначем при чтении потока. Только произошло это не совсем в design-time, а как бы несколько раньше, во время чтения DFM.

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


 
easy   (2004-01-14 19:09) [14]

почти то-же самое, что PB в TotalCommander

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Panel1: TPanel;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure Drawprogress(Position: Integer);
procedure Timer1Timer(Sender: TObject);
private
i: integer;
progressimg: TImage;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
panel1.DoubleBuffered := true;
Panel1.BevelOuter:=bvLowered;
progressimg := TImage.Create(self);
with progressimg do begin
Parent := Panel1;
Align := alClient;
end;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
progressimg.Free;
end;

procedure TForm1.Drawprogress(Position: Integer);
var
s: string;
pos: integer;
begin
s := inttostr(Position) + "%";
with progressimg do begin
pos := (Width div 100) * Position;
Canvas.Brush.Color := clbtnface;
Canvas.FillRect(ClientRect);
Canvas.Brush.Color := clHighlight;
Canvas.FillRect(rect(0, 0, pos, ClientHeight));
Canvas.Font.Style := [fsbold];
Canvas.Font.Color := clHighlightText;
Canvas.Brush.Style := bsclear;
Canvas.TextRect(Rect(0, 0, pos, ClientHeight),
ClientWidth div 2 - Canvas.TextWidth(s) div 2,
ClientHeight div 2 - Canvas.TextHeight(s) div 2, s);
Canvas.Font.Color := clBtnText;
Canvas.TextRect(Rect(pos, 0, ClientWidth, ClientHeight),
ClientWidth div 2 - Canvas.TextWidth(s) div 2,
ClientHeight div 2 - Canvas.TextHeight(s) div 2, s);
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Drawprogress(i);
inc(i);
if i = 101 then i := 0;
end;

end.


 
MVova   (2004-01-14 19:11) [15]


> Юрий Зотов © (14.01.04 18:44) [13]
>Но не думаю, что такой способ можно считать хорошим.

Согласен, как-то скрытно получается.
Я напарнику показал, он пол часа мучался, бедняга думал как я его туда засунул.



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.03 c
3-16175
NewD
2004-01-14 07:03
2004.02.06
Отчет по шаблону в MS WORD


3-16186
MV
2004-01-13 18:04
2004.02.06
Статистика в InterBase


3-16107
Ruslan
2004-01-10 15:55
2004.02.06
BDE


14-16657
Продолжающий
2004-01-18 12:42
2004.02.06
Куда пойти учиться ? (Москва)


3-16188
Noname
2004-01-15 15:31
2004.02.06
временные таблицы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский