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

Вниз

"Засунуть" ProgressBar в StatusBar   Найти похожие ветки 

 
SergP ©   (2004-04-13 13:31) [0]

Подскажите как сделать сабж.
Можно код или хотя-бы сам принцип .


 
RDen   (2004-04-13 13:39) [1]

ProgressBar.Parent:=  StatusBar;


 
SergP ©   (2004-04-13 13:44) [2]

Ну это понятно. Я имел ввиду как его засунуть в конкретную Panel?


 
clickmaker ©   (2004-04-13 13:46) [3]

Определить координаты панели (сложив Width предыдущих, например) и ProgressBar.Left :=


 
pasha_golub ©   (2004-04-13 13:48) [4]

SergP ©   (13.04.04 13:44) [2]
Лучше самому отрисовывать в OnDrawPanel


 
han_malign ©   (2004-04-13 13:52) [5]

ну, лично я, не мудрствуя лукаво, отрисовываю руками
procedure DrawSimpleHProgressBar(aCanvas: TCanvas; const aRect: TRect; aColor: TColor;
  aText: string; aPercent: byte; aHCenterText: boolean);
var W,H,X,Y: integer;
   _rect: TRect;
   _clr: TColor;
   _bs: TBrushStyle;
begin
  if(aPercent>100)then aPercent:=0;
  W:=aRect.Right-aRect.Left+1; H:=aRect.Bottom-aRect.Top+1;
  _rect:=aRect;
  if(aPercent>0)then begin
     _rect.Right:=aRect.Left+W*aPercent div 100-1;
     _clr:=aCanvas.Brush.Color;
     aCanvas.Brush.Color:=aColor;
     aCanvas.FillRect(_rect);
     aCanvas.Brush.Color:=_clr;
     aText:=aText+" "+IntStr(aPercent)+"%";
     _rect.Left:=_rect.Right+1;
     _rect.Right:=aRect.Right;
  end;
  if(_rect.Right>=_rect.Left)then aCanvas.FillRect(_rect);
  Y:=(H-aCanvas.TextHeight(aText))div 2;
  if(Y<0)then Y:=0;
  X:=(W-aCanvas.TextWidth(aText))div 2;
  if(X<0)then X:=0;
  if((X>Y)and not aHCenterText)then
     if(Y>0)then X:=Y
     else if(X>2)then X:=2;
  _bs:=aCanvas.Brush.Style;
  aCanvas.Brush.Style:=bsClear;
  aCanvas.TextOut(aRect.Left+X,aRect.Top+Y,aText);
  aCanvas.Brush.Style:=_bs;
end;

примерно так, для одной панели
procedure TDeviceForm.sbDeviceDrawPanel(StatusBar: TStatusBar;
 Panel: TStatusPanel; const Rect: TRect);
var _text: string;
   _prgrs: byte;
begin
  Lock; _text:=F_sStatus; _prgrs:=F_nProgress;Unlock;
  DrawSimpleHProgressBar(StatusBar.Canvas,Rect,clBlue,_text,_prgrs,false);
end;

 F_sStatus, F_nProgress - у меня обновляется в контексте другого потока, поэтому используется Lock/Unlock, в которых упакована критическая секция.
procedure TDeviceForm.SetStatus(aStatus: string; aProgress: byte= 0);
var _fU: boolean;
begin
 Lock;
  _fU:=(F_sStatus<>aStatus)or(aProgress<>F_nProgress);
  F_sStatus:=aStatus;
  F_nProgress:=aProgress;
 Unlock;
  if(_fU)then sbDevice.Invalidate;
end;


 
SergP ©   (2004-04-13 13:55) [6]


> clickmaker ©   (13.04.04 13:46) [3]


> pasha_golub ©   (13.04.04 13:48) [4]


Просто сначала думал что его можно сразу поместить в конкретную panel, а нифига не выходило.
Теперь все понял. Спасибо...


 
Amoeba ©   (2004-04-13 13:57) [7]

В целом ряде библиотек есть StatusBar, которые позволяют помещать на них другие компоненты. Также посмотри такие StatusBar на http://www.torry.net
Отрисовка руками, IMHO, есть "поездка в Москву из Питера через Владивосток".


 
pasha_golub ©   (2004-04-13 14:51) [8]

Amoeba ©   (13.04.04 13:57) [7]
Здрасте, это как раз и есть, то шо надо. :-) Не учитывая наличия компонентов.



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

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

Наверх




Память: 0.46 MB
Время: 0.039 c
3-1080940366
lockheed_man
2004-04-03 01:12
2004.05.02
Проблемы с добавлением данных в базу данных


1-1081676847
Calabonga
2004-04-11 13:47
2004.05.02
Проблема с Delphi7...вернее со встроенным дебаггером...


14-1081160711
Thor
2004-04-05 14:25
2004.05.02
малыш и Буш :)


3-1081277285
neVIP
2004-04-06 22:48
2004.05.02
Как лечить Cannot modify


14-1081854360
Alex_x
2004-04-13 15:06
2004.05.02
может кто знает полный алгоритм такой защиты????





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский