Einzelnen Beitrag anzeigen

Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#12

Re: ComboBox: Breite der DropDown-Liste ändern

  Alt 9. Jan 2007, 11:17
Delphi-Quellcode:
//______________________________________________________________________________
Procedure TDieComboBox.SetListHandle(_hHandle: HWND);
Var
   R:TRect;
  iX:integer;
Begin
   If _hHandle<>ListHandle
  Then Begin
     If _hHandle<>0
    Then Begin
         hListHandle:=_hHandle;
         pDefListProc := Pointer(GetWindowLong(hListHandle, GWL_WNDPROC));
         SetWindowLong(hListHandle, GWL_WNDPROC, Longint(pListInstance));
         Case LBShowState Of
            lbsFullSizeLeft,
            lbsFullSizeRight,
            lbsFullSizeCenter: Begin
          GetWindowRect(ListHandle,R);
               R.Right:=R.Left+CellSize*11+2;
          R.Bottom:=R.Top+CellSize*10+2;
          iX:=0;
          Case LBShowState Of
            lbsFullSizeRight: iX:=Width-(R.Right-R.Left);
            lbsFullSizeCenter: iX:=(Width-(R.Right-R.Left)) DIV 2;
          End;
          MoveWindow (ListHandle,R.Left+iX,R.Top,R.Right - R.Left,
                            R.Bottom - R.Top,TRUE );
            End;
      End;
    End Else Begin
         SetWindowLong(hListHandle, GWL_WNDPROC, Longint(pDefListProc));
       hListHandle:=0;
    End;
  End;
End;
Die beiden Befehle, die Du hier brauchst sind 'GetWindowRect', um die Abmessungen der Liste zu bekommen und 'MoveWindow', um die neue Größe zu setzen. Ich hab den Code aus Faulheit nur aus einem Projekt von mir rauskopiert, aber ich denke, der Sinn wird deutlich.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat