Willkommen bei Entwickler-Forum.
Ergebnis 1 bis 6 von 6
  1. #1
    Zaungast
    Registriert seit
    23.03.2011
    Beiträge
    12

    Standard Statusbar, Panel andere Farbe

    Ich habe in meinem Programm buttom angegeordnet ein Objekt TStatusbar und hierin mehrere Panels zur Anzeige aktueller Parameter.
    Ein Textfeld würde ich gerne mit verschiedener Vorder- Hintergrundfarbe anzeigen. zB roter Hintergrund:
    with Form1.Statusbar1 do begin
    color:=clred;
    Font.Color:=clWindow;
    Font.Style:= [fsbold];
    Panels[0].Text:=Fehlertext;
    end;
    Diese Befehlsfolge bewirkt aber, dass alle! Felder mit rotem Hintergrund erscheinen. Beim einzelnen Panel-Objekt finde ich keinen Parameter "Color".
    Oder doch?

  2. #2
    Stammgast
    Registriert seit
    26.02.2003
    Ort
    Linz / Österreich
    Beiträge
    1.959

    Standard

    Nein, die Standard-Statusbar kann das nicht. Aber es gibt da eine Freeware, die kann das - siehe hier.

    bye,
    Helmut

  3. #3
    Zaungast
    Registriert seit
    23.03.2011
    Beiträge
    12

    Standard

    Hallo Helmut,
    habe ich probiert (war nicht einfach, da zuvor eine Komponente SBPro installiert werden musste). War zunächt ganz happy. Habe diese Mehrfach-Statusbar allerdings wieder aus dem Programm entfernt. Grund: in einem Textfeld zeigte ich Zeile und Spalte an, d.h. bei jedem tastendruck Aktualisierung. Aus mir nicht erklärbarem Grund wurde immer wieder mal in diesem Feld in blauer Farbe (die ich nirgends verwende) ein Text aus dem Pulldown-Menü/Datei angezeigt. Da es bei meiner Aufgabe immer um Fehler- oderBedienhinweise ging, habe ich für die kurzzeitige Anzeige auf SinglePanel umgestellt. Aber danke für den Hinweis. hRb

  4. #4
    Gesperrt
    Registriert seit
    05.03.2006
    Beiträge
    49

    Standard

    Hallo,

    das habe ich in meinem Program so gelöst:

    procedure TForm.StBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel;
    const Rect: TRect);
    var x: Integer;
    begin //
    StatusBar.Canvas.Font.Style:=[fsBold];
    if True then begin
    StatusBar.Canvas.Brush.Color:=clSkyBlue;
    StBar1.Panels[3].Text:=MeldeText(3);
    end else begin
    StatusBar.Canvas.Brush.Color:=clred;
    StBar1.Panels[3].Text:=MeldeText(2);
    end;

    StatusBar.Canvas.FillRect(Rect);
    x:=(Rect.Width-StatusBar.Canvas.TextWidth(StBar1.Panels[3].Text)) div 2;
    StatusBar.Canvas.TextOut(Rect.Left+x,Rect.Top+1,pa nel.Text);
    end;

    Das Panel musst Du OwnerDraw auf True setzen.
    Vielleicht hilft das Dir.

    Gruss Gerhard

  5. #5
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.262

    Standard

    Schön, die Antwort auf einen 4 Jahre alten Beitrag. Warum erst jetzt?
    Christian

  6. #6
    Gesperrt
    Registriert seit
    05.03.2006
    Beiträge
    49

    Standard

    Hallo Christian,

    hab ich ja erst heute gelesen... als ich mein neues Problem hier gepostet habe...
    Vielleicht kann den Code ja auch jemand anders gebrauchen...

    Gruss Gerhard

 

 

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •