2009-06-25 8 views
0

Ist es möglich, die CoolBands auf der linken Seite des CoolBar auszurichten? Bedeutet, wenn die CoolBar (Form) in der Größe geändert wird und die CoolBands in die darunter liegende Reihe verschoben werden, sollte das Band auf der linken Seite des Balkens ausgerichtet sein (statt auf der rechten Seite). Ähnliches Menüverhalten, wenn die Elemente nicht mehr in eine Zeile passen.Delphi TCoolBar - CoolBand Ausrichtung

Furthmore ist es möglich, die Einstellung der Bands zu retten?

Antwort

0

Wenn Sie für jedes Band die MinWidth-Eigenschaft festlegen und die CoolBar AutoSize-Eigenschaft auf True setzen, wird sie automatisch umbrochen, sobald ein Band die MinWidth aufweist.

Bearbeiten: Das oben genannte ist immer noch korrekt, sollte aber erweitert werden - neue Informationen aus dem Kommentarbereich. Die Coolbar versucht immer, die Breite des Steuerelements zu füllen, sodass dein letztes Band sich ausdehnt, um Platz zu belegen. Wenn Sie den bandgesteuerten Steuerelementen MaxWidth-Beschränkungen hinzufügen, werden sie beim Umbrechen und Strecken des Bands nach rechts ausgerichtet. Die beste Lösung ist hier, Ihre MinWidth auf alles einzustellen, was Sie brauchen, aber die CoolBar die maximale Breite bestimmen zu lassen.

Speichern Sie die Anpassung? Meinst du die genaue Platzierung jedes Coolbands? Wenn ja, ich glaube nicht, dass Sie es direkt speichern können, nein. Aber es sollte trivial sein, das Layout zu reproduzieren. Speichern Sie die Bruch- und Breiteneigenschaften jedes Bandes und wenden Sie sie der Reihe nach an. Ich denke, Ihre beste Strategie wäre es, die Form (oder TCoolBar) zu ändern, Break für jedes Band und dann Width für jedes Band anzuwenden (zweimal Schleife).

Wenn das nicht funktioniert, können Sie versuchen, die Windows-Nachricht direkt aufzurufen. Dadurch können Sie beide Eigenschaften gleichzeitig festlegen.

uses 
    CommCtrl; 
... 
var 
    Info: TRebarBandInfo; 
... 
    ZeroMemory(@Info, SizeOf(Info)); 
    Info.cbSize := SizeOf(Info); 
    Info.fMask := RBBIM_SIZE + RBBIM_STYLE; 
    Info.cx := 400; // Your desired width 
    Info.fStyle := RBBS_BREAK + OldStyle; 
    SendMessage(Coolbar.Handle, RB_SETBANDINFO, 0, Integer(@Info)); 

Das sollte funktionieren, aber erfordern, dass Sie OldStyle oben gleich den vorhandenen Stil zu machen. Dies wiederum erfordert, dass Sie entweder einen Großteil des Codes in TCoolBar.UpdateItem duplizieren oder zuerst die Nachricht RB_SETBANDINFO senden. Schmerzhaft, also versuche Break und dann Width zuzuweisen.

Suchen Sie in der Hilfedatei des Delphi Windows SDK nach Rebar Reference, wenn Sie Informationen zu allen Nachrichten benötigen. Bei mir ist die Hilfe-URL (für den Hilfe-Viewer) ms-help: //embarcadero.rs2009/ShellCC/platform/commtls/rebar/reflist.htm

+0

AutoSize und MinWidth sind bereits festgelegt und die Bänder werden entsprechend umgebrochen. Aber wenn die neue Reihe beginnt, wird das Band in der neuen Reihe dann auf die rechte Seite ausgerichtet. Das sieht ein bisschen komisch aus. –

+0

Ich sehe das nicht. Die Band füllt die ganze Reihe für mich. Und wenn ich eine Einschränkung für das Steuerelement auf dem Band festlege, verschiebt sich das Band nach links. Selbst wenn ich den BiDi-Modus von rechts nach links setze, kann ich nicht erreichen, dass er richtig hängt. Vielleicht kannst du uns mehr über Einstellungen auf den Bändern, coolbar und Form erzählen? Ich führe Windows XP SP 3. Vielleicht eine Windows-Version der Sache? Oder vielleicht gibt es eine leere Band, die nimmt –

+0

Auch sind Sie glücklich mit meiner Antwort auf die Wiederherstellung des Staates? –