Listview içeriği oluşturuldu.
Bu esnada kullanıcı ctrl + 'ya basarsa tüm kolanların genişliği otomatik olarak ayarlanıyor.
Bunu programın içinden nasıl yaptırabiliriz? içerik tamamlandıktan sonra Listview.? dan sonrakilerden hangisini nasıl kullanmalıyım?
kolonlara ait autosize özelliği sadece formun ebatlarıyla ilgili olarak işe yaramaktadır. minwidth, maxwidth ayarlayabiliyoruz fakat içeriğine duyarsız.
Listview kolon geniş.otomatik ayarlamak
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
merhaba,
listview'ın bunu simule eden bir özelliği mutlaka vardır ama ben bulamadım. ama sorununuzun, listview e focuslanıp kodla Ctrl+'+' tuş kombinasyonunu göndermek suretiyle çözümü aşağıdaki gibi;
NOT: Forma bir adet listview ve buton koydum. Listview'a birkaç item ekleyip ViewStyle'ını vsReport yaptım. Tuş kombinasyonu göndermeyle ilgili prosedür http://www.nsonic.de/Delphi/txt_WIS00355.htm sitesinden alınmıştır.
listview'ın bunu simule eden bir özelliği mutlaka vardır ama ben bulamadım. ama sorununuzun, listview e focuslanıp kodla Ctrl+'+' tuş kombinasyonunu göndermek suretiyle çözümü aşağıdaki gibi;
Kod: Tümünü seç
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;
type
TForm1 = class(TForm)
ListView1: TListView;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
//Burada prosedürü deklare ediyoruz
Procedure PostKeyEx32( key: Word; Const shift: TShiftState; specialkey: Boolean );
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//prosedürü yazıyoruz
Procedure tform1.PostKeyEx32( key: Word; Const shift: TShiftState; specialkey: Boolean );
Type
TShiftKeyInfo = Record
shift: Byte;
vkey : Byte;
End;
byteset = Set of 0..7;
Const
shiftkeys: Array [1..3] of TShiftKeyInfo =
((shift: Ord(ssCtrl); vkey: VK_CONTROL ),
(shift: Ord(ssShift); vkey: VK_SHIFT ),
(shift: Ord(ssAlt); vkey: VK_MENU ));
Var
flag: DWORD;
bShift: ByteSet absolute shift;
i: Integer;
Begin
For i := 1 To 3 Do Begin
If shiftkeys[i].shift In bShift Then
keybd_event( shiftkeys[i].vkey,
MapVirtualKey(shiftkeys[i].vkey, 0),
0, 0);
End; { For }
If specialkey Then
flag := KEYEVENTF_EXTENDEDKEY
Else
flag := 0;
keybd_event( key, MapvirtualKey( key, 0 ), flag, 0 );
flag := flag or KEYEVENTF_KEYUP;
keybd_event( key, MapvirtualKey( key, 0 ), flag, 0 );
For i := 3 DownTo 1 Do Begin
If shiftkeys[i].shift In bShift Then
keybd_event( shiftkeys[i].vkey,
MapVirtualKey(shiftkeys[i].vkey, 0),
KEYEVENTF_KEYUP, 0);
End; { For }
End; { PostKeyEx32 }
procedure TForm1.Button1Click(Sender: TObject);
begin
//Bu kodları sizin için gerekli yerde kullanarak istediğiniz işlemi yapabilirsiniz. (Burada 107 +'nın karşılığıdır.)
ListView1.SetFocus;
PostKeyEx32(107,[ssCtrl],true);
end;
end.
"Evine bakmaktan aciz olan; ilerici, üç kıtaya hükmeden ecdadın mı gerici?"
Merhaba..
- Aşağıdaki kodu dener misin... İşe yarayacaktır...
- Başarılar...
- Aşağıdaki kodu dener misin... İşe yarayacaktır...
Kod: Tümünü seç
ListView1.Columns[0].Width := -1;
teşekkür ederim . tuş gönderme olayı sanırım kesin olur.
Columns[0] ile ilk kolon için oluyor. gibi her kolon için tekrarlanırsa olur sanırım. .
Columns[0] ile ilk kolon için oluyor.
Kod: Tümünü seç
ListView1.Columns[0].Width := -1;
Saolun buna da gerek yokmuş. Tasarım zamanında object inspectordan tüm(veya istenen) kololnların genişliğini -1 yapmak yeterli oldu.
-1 in manası neyse artık. helpte de sadece bu yazıyor:
Delphi syntax:
property Width: Integer;
C++ syntax:
__property int Width = {read=GetWidth, write=SetWidth};
Description
The Width property determines the default width of the column, in pixels. List columns can be resized at runtime by dragging their borders.
örnek:


-1 in manası neyse artık. helpte de sadece bu yazıyor:
Delphi syntax:
property Width: Integer;
C++ syntax:
__property int Width = {read=GetWidth, write=SetWidth};
Description
The Width property determines the default width of the column, in pixels. List columns can be resized at runtime by dragging their borders.
örnek:
