AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TLIstView Spaltenänderung Benachrichtigung

Ein Thema von ManfredG · begonnen am 27. Okt 2007 · letzter Beitrag vom 9. Mär 2009
Antwort Antwort
ManfredG

Registriert seit: 12. Feb 2007
Ort: Berlin
34 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

TLIstView Spaltenänderung Benachrichtigung

  Alt 27. Okt 2007, 09:38
(BD6)
Hallo,
ich suche eine Message, die mir sagt, daß ein Anwender in einer Listview die breite einer Spalte verändert hat,
(ViewStyle=vsReport).
Möchte sofort nach Veränderung die Spaltenbreiten speichern.
Hat jemand einen Tip?
Manfred Götze
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: TLIstView Spaltenänderung Benachrichtigung

  Alt 27. Okt 2007, 12:40
Zitat von ManfredG:
Möchte sofort nach Veränderung die Spaltenbreiten speichern.
Hallo,

zumindest kenne ich eine Möglichkeit, wo man beim Verändern der Spaltenbreite benachrichtigt wird.
Angehängte Dateien
Dateityp: zip listview_209.zip (6,3 KB, 7x aufgerufen)
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: TLIstView Spaltenänderung Benachrichtigung

  Alt 4. Nov 2007, 18:44
Hallo,

jetzt habe ich doch noch eine Möglichkeit gefunden, so dass man benachrichtigt wird wenn der Anwender in einem Listview die Breite einer Spalte verändert hat.

Die Message heißt HDN_ENDTRACK und kommt vom Header des Listview.
Angehängte Dateien
Dateityp: zip listviewheader_196.zip (6,6 KB, 9x aufgerufen)
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Jelen

Registriert seit: 5. Nov 2003
45 Beiträge
 
#4

Re: TLIstView Spaltenänderung Benachrichtigung

  Alt 9. Mär 2009, 15:42
Dieses Thema hat mir gerade weitergeholfen.
Um die Sache etwas eleganter nutzen zu können, habe ich eine Komponente daraus gemacht:
Delphi-Quellcode:
unit MyListView;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls;

type TColWidthChangeEvent = procedure(Sender: TObject;
                                      ACol,AWidth: integer) of object;
     TMyListview = class(TListview)
     private
       FOnColWidthChange: TColWidthChangeEvent;
     protected
       procedure WMNotify(var Msg: TWMNotify); message WM_NOTIFY;
     published
       property OnColWidthChange: TColWidthChangeEvent read FOnColWidthChange
                                                       write FOnColWidthChange;
     end;

procedure Register;

implementation

uses commctrl;

procedure TMyListview.WMNotify(var Msg: TWMNotify);
 var ColumnIndex: integer;
 begin
  inherited;
  if (Msg.NMHdr^.code = HDN_ENDTRACK) and Assigned(OnColWidthChange)
  then begin { Ereignis OnColWidthChange generieren }
        ColumnIndex := PHDNotify(Msg.NMHdr)^.Item;
        OnColWidthChange(Self,ColumnIndex,Columns[ColumnIndex].Width);
       end;
 end;

procedure Register;
 begin
  RegisterComponents('My',[TMyListview]);
 end;

end.
Damit verfügt das TMyListView über das gewünschte OnColWidthChange-Ereignis.

Allerdings habe ich das commctrl.ListView_GetColumnWidth(Handle,ColumnInde x) rausgeworfen.
Es übergibt manchmal den Wert, bis zu dem der Anwender gezogen hat, aber nicht immer (?).

Columns[ColumnIndex].Width hingegen übergibt - zumindest bei mir - immer den Wert, der sich letztendlich einstellt, auch unter Berücksichtigung von MinWidth und MaxWidth.

@bitsetter: Falls Du dies noch liest, vielleicht kannst Du noch anfügen, warum Du ListView_GetColumnWidth benutzt hast.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz