Einzelnen Beitrag anzeigen

David Martens

Registriert seit: 29. Sep 2003
205 Beiträge
 
Delphi XE Enterprise
 
#10

AW: selbsterstellte Combobox hat (noch) keinere Fehler

  Alt 15. Jun 2010, 17:37
So:

Delphi-Quellcode:
procedure TMultiColCheckedComboBox.DoDropDown(Sender : TObject);
var
  ScreenPoint : TPoint;
  i, j,
  FWidth,
  FHeight,
  FTop,
  FLeft : integer;
begin
  // damit das Suchfeld nicht unerwartet aufpoppt, wird es beim Zeigen der
  // CheckList immer auf unsichtbar geschaltet
  if FSearchForm.Visible then
  begin
    FSearchForm.Visible := false;
  end;

  if FMultiSearchForm.Visible then
  begin
    FMultiSearchForm.Visible := false;
  end;

  // Dropdownbutton
  if FButton.Tag = 1 then
  begin
    FButton.Tag := 0;
    if not FEdit.Focused then
      EditOnExit(Sender);
    Exit;
  end;

  Click;

  // Assign Form coordinate and show
  ScreenPoint := Parent.ClientToScreen(Point(Self.Left, Self.Top + Self.Height));

  with FPrivForm do
  begin
    Visible := false;
    FLeft := ScreenPoint.X;
    FTop := ScreenPoint.Y;
    FWidth := 0;
    FHeight := 0;

    // Gesamtbreite des Grids ermitteln
    ...
    // Aufklapphöhe ermitteln (keine leere Fläche in der DropDownBox)
    ...
    // Breite mindestend Komponentenbreite
    ...
    // Höhe auf Bildschirmgröße limitieren
    ...
    // Breite auf Bildschirmgröße limitieren
    ...

    BorderStyle := bsNone;
    OnDeactivate := DoCloseDropDown;

    // Box anzeigen
    Show;
    SetBounds(FLeft, FTop, FWidth, FHeight);
    FormStyle := fsStayOnTop; // über die Startleiste
    Font := Self.Font;
  end;
end;
  Mit Zitat antworten Zitat