Difference between revisions of "TListView/pl"

From Free Pascal wiki
Jump to navigationJump to search
(→‎Sorting: tłumaczenie na j. polski)
(→‎See also: tłumaczenie na j. polski)
 
(4 intermediate revisions by the same user not shown)
Line 6: Line 6:
 
* '''GetNextItem'''() wymaga podania StartItem. Jest to niezgodne z GetNextItem() Delphi, gdzie parametr StartItem może mieć wartość '''nil''', co spowoduje wykonanie wyszukiwania od względnego (sterowanego kierunkiem) startu.
 
* '''GetNextItem'''() wymaga podania StartItem. Jest to niezgodne z GetNextItem() Delphi, gdzie parametr StartItem może mieć wartość '''nil''', co spowoduje wykonanie wyszukiwania od względnego (sterowanego kierunkiem) startu.
  
==Sorting==
+
==Sortowanie==
 
  TODO: dodać opis, w jaki sposób OwnerData wpływa na sortowanie
 
  TODO: dodać opis, w jaki sposób OwnerData wpływa na sortowanie
  
Line 39: Line 39:
 
</source>
 
</source>
  
Zdarzenie OnCompare powinno sprawdzać właściwości TListView '''SortType''', '''SortColumn''' i '''SortDirection''' oraz odpowiednio dostosowywać wynik porównania tych właściwości.
+
Zdarzenie OnCompare powinno sprawdzać właściwości TListView '''SortType''', '''SortColumn''' i '''SortDirection''' oraz odpowiednio dostosowywać wynik porównania w zależności od stanu tych właściwości.
  
Method '''Sort''' performs of items, if '''SortType''' is other than '''stNone''' and SortColumn is assigned to a valid column index.
+
Metoda '''Sort''' sortuje elementy, jeśli '''SortType''' jest inny niż '''stNone''' i SortColumn jest przypisany do prawidłowego indeksu kolumny.
  
Method '''CustomSort''' performs a one-time sorting using a provided sorting function.  
+
Metoda '''CustomSort''' wykonuje jednorazowe sortowanie za pomocą dostarczonej funkcji sortowania.
:ASortProc: TLVCompare - sorting function
+
:ASortProc: TLVCompare - funkcja sortowania
:AOptionalParam: PtrInt - sorting parameter
+
:AOptionalParam: PtrInt - parametr sortowania
Sorting parameter is ignored (provided for the Delphi compatibility). If '''ASortProc''' is passed as nil, then the either sorting OnCompare is used or default sorting.
 
  
Typically the sorting can be requested by a user. Whenever a user clicks on a column header, that requires to either sort (initially ascendancy) or to switch to the opposite sorting order (either from ascendant to descendant, or back). It's not a rule, but a common expectation. For some data sets selecting sorting might not make any sense. '''AutoSort''' (default value is true)the property of TListview controls, if the listview should be sorted automatically, as soon as user clicks on a column header. '''AutoSort''' will have no effect, while '''SortType''' is set to '''stNone'''.
+
Parametr sortowania jest ignorowany (występuje on tylko dla kompatybilności z Delphi). Jeśli '''ASortProc''' ma wartość zero, wówczas używane jest sortowanie OnCompare lub sortowanie domyślne.
  
'''AlphaSort''' is a convenience method, that changes the settings to ascending sort (SortDirection=sdAscending) based on the text (SortType=stText) of the first column (SortColumn=0). Note that the actual properties are changed.
+
Zazwyczaj sortowania może zażądać użytkownik. Za każdym razem, gdy użytkownik kliknie nagłówek kolumny, żąda on jakiegoś sposobu sortowania (początkowo rosnąco) albo przełączenia na odwrotną kolejność sortowania (z rosnącego na malejące lub odwrotnie). To nie reguła, ale powszechne oczekiwanie. W przypadku niektórych zbiorów danych wybór sortowania może nie mieć sensu. Jeśli widok listy powinien być sortowany automatycznie, gdy tylko użytkownik kliknie nagłówek kolumny należy użyć właściwość kontrolki TListview '''AutoSort''' (wartość domyślna to true). '''AutoSort''' nie przyniesie żadnego efektu, gdy właściwość '''SortType''' jest ustawiony na '''stNone'''.
  
===Sort Indicator===
+
'''AlphaSort''' to wygodna metoda, która zmienia ustawienia na sortowanie rosnąco (SortDirection=sdAscending) w oparciu o tekst (SortType=stText) pierwszej kolumny (SortColumn=0). Zwróć uwagę, że rzeczywiste właściwości uległy zmianie.
Originating from: https://bugs.freepascal.org/view.php?id=36281
+
 
 +
===Wskaźnik kierunku sortowania===
 +
Pochodzący z: https://bugs.freepascal.org/view.php?id=36281
  
 
In trunk since r62567
 
In trunk since r62567
  
1) Add a new property '''SortIndicator''' to TListViewColumn. The property controls system native sort indicator.
+
1) Dodaj nową właściwość '''SortIndicator''' do TListViewColumn. Właściwość ta kontroluje systemowy wskaźnik sortowania.
 +
 
 +
Wskaźnik ten pełni wyłącznie funkcję informacyjną. Reprezentuje graficznie kierunek sortowania (ale nie ma żadnego wpływu na sortowanie). Wskaźnik ma 3 możliwe wartości
 +
 
 +
:'''siNone''' - nie powinien być pokazywany żaden wskaźnik sortowania
 +
:'''siAscending''' - powinien być pokazywany wskaźnik rosnący
 +
:'''siDescending''' - powinien być pokazywany wskaźnik malejący
  
The indicator is acting solely as a decorative feature. (Doesn't have any effect on the sorting).
+
Właściwość może działać niezależnie od innych właściwości sortowania TListview.
The indicator has 3 possible values
 
:'''siNone''' - no sort indicator should be shown
 
:'''siAscending''' - ascending indicator should be shown
 
:'''siDescending''' - descending indicator should be shown
 
The property can work independently of other TListview sorting properties.
 
  
 
[[File:autosort0.gif]]
 
[[File:autosort0.gif]]
  
2) Add new property '''AutoSortIndicator''' to TListView. The property is intended to be used as a compliment to '''AutoSort''' property.
+
2) Dodaj nową właściwość '''AutoSortIndicator''' do TListView. Właściwość używa się jako uzupełnienie właściwości '''AutoSort'''. Jeśli oba są włączone, kod LCL kontroluje bieżący wybór wskaźnika sortowania kolumn zgodnie z regułami '''AutoSort'''.
If both are enabled, LCL code controls the current selection of the column sortindicator according to '''AutoSort''' rules.
 
  
 
[[File:autosort2.gif]]
 
[[File:autosort2.gif]]
  
Early 2021 it was noticed that if you are using Qt5 and you have TListView.SortDirection set to sdAscending (the default), then setting a column's Sort Indicator to siDescending displays an ascending indicator. This does not happen with GTK2 or GTK3. Setting SortDirection to sdDescending makes all other combinations work fine so, seems an easy solution. Logged https://bugs.freepascal.org/view.php?id=38393
+
Na początku 2021 r. zauważono, że jeśli używasz Qt5 i masz TListView.SortDirection ustawioną na sdAscending (domyślnie), to ustawienie wskaźnika sortowania kolumny na siDescending wyświetla wskaźnik rosnący. Nie dzieje się tak z GTK2 lub GTK3. Ustawienie SortDirection na sdDescending sprawia, że ​​wszystkie inne kombinacje działają dobrze, więc wydaje się łatwym rozwiązaniem. Zobacz: https://bugs.freepascal.org/view.php?id=38393
  
==Widgetset Implementation==
+
==Implementacja widżetów==
 
ListView is implemented via TWSCustomListViewClassinterface.
 
ListView is implemented via TWSCustomListViewClassinterface.
 +
ListView jest implementowany za pośrednictwem interfejsu TWSCustomListViewClassinterface.
 
{|class="wikitable"
 
{|class="wikitable"
!Method
+
!Metoda
!Description
+
!Opis
 
|-
 
|-
 
|SelectAll
 
|SelectAll
|The method provides a parameter '''AIsSet'''.
+
|Metoda udostępnia parametr '''AIsSet'''.
  
If the parameter is set to '''true''' then all items should selected in the view.
+
Jeśli parametr jest ustawiony na '''true''', wszystkie elementy powinny być wybrane w widoku. Jeśli jest to '''false''', wszystkie parametry powinny zostać odznaczone.
If it's '''false''' then, all parameters should deselected.
 
  
It's important that the event shouldn't trigger any events, as LCL will call SelectChange event by itself.
+
Ważne jest, aby to zdarzenie nie wyzwalało żadnych innych zdarzeń, ponieważ LCL sam wywoła zdarzenie SelectChange.
 
|}
 
|}
  
== See also==
+
== Zobacz także ==
* [[doc:lcl/comctrls/tlistview.html|Doc. TListView]]
+
* [[doc:lcl/comctrls/tlistview.html|Dokumentacja TListView]]
 
* [[TTreeView]]
 
* [[TTreeView]]
 
* [[TShellListView]]
 
* [[TShellListView]]
  
 
{{LCL Components}}
 
{{LCL Components}}

Latest revision as of 20:31, 31 October 2021

English (en) français (fr) polski (pl) русский (ru)

TListView tlistview.png jest wizualnym komponentem na zakładce Common Controls Palety Komponentów, który zapewnia widok listy powiązanych z nim elementów. Elementy mogą być reprezentowane przez jeden z zestawów ikon powiązanych z TImageList: SmallImages, LargeImages i StateImages.

Uwagi

  • GetNextItem() wymaga podania StartItem. Jest to niezgodne z GetNextItem() Delphi, gdzie parametr StartItem może mieć wartość nil, co spowoduje wykonanie wyszukiwania od względnego (sterowanego kierunkiem) startu.

Sortowanie

TODO: dodać opis, w jaki sposób OwnerData wpływa na sortowanie

Sortowanie jest (zazwyczaj) stosowane podczas korzystania z vsReport ViewStyle, ponieważ jest oparte na kolumnach (z wymaganym indeksem Sortcolumn). Sortowanie może być czasochłonne w przypadku większej ilości danych (gdy porównywanie elementów zajmuje dużo czasu).

SortType jest kluczową właściwością w celu wykonania dowolnego sortowania w TListView.

stNone - (wartość domyślna) informująca, że dla danej kontrolki sortowanie nie powinno być wykonywane.
stText - tekst komórek powinien być używany do porównania elementów. Istniejący tekst jest kontrolowany przez właściwość SortColumn. Zauważ, że domyślne porównanie sortowania w rzeczywistości traktuje tekst jako Ansi, a nie UTF8. W związku z tym wynik może być niepożądany w przypadku tekstów nieanglojęzycznych
stData - porównanie właściwości Data domyślne traktowane są jako wartości całkowite (przez rzutowanie wskaźnika na liczbę całkowitą) i sortowane według wartości. (w większości przypadków takie sortowanie jest bezużyteczne, chyba że „Dane” to rzeczywista liczba całkowita rzutowana na wskaźnik)
stBoth - domyślnie traktowane jest jak stText podczas sortowania.

Jeśli nie używasz sortowania tekstu, domyślna metoda porównania nie jest najlepszym podejściem, zamiast tego można użyć porównania niestandardowego. Porównanie niestandardowe jest przypisywane do zdarzenia OnCompare TListView, do którego przekazywane są następujące parametry:

Sender - TListview, który ma być sortowany
Item1 - pierwszy element TListItem użyty do porównania
Item2 - drugi element TListItem użyty do porównania z pierwszym
Data - nie jest używany i jest zawsze podawany jako zero. (zastosowany dla zgodności z Delphi)
Compare - wynik porównania, który musi być ustalony przez zdarzenie. Do argumentu Compare należy przypisać następujące wartości:
-1 - jeśli pozycja Item1 powinna pojawić się „wcześniej”, tj. w kolejności rosnącej, niż Item2. (Item1 jest mniejsza niż Item2)
0 - jeśli dwa elementy Item są równe
1 - jeśli pozycja Item2 powinna pojawić się „wcześniej”, tj. w kolejności rosnącej, niż Item1. (Item2 jest mniejsza niż Item1)
Normalną praktyką jest odwracanie wartości wyniku porównania, jeśli SortDirection jest malejący. tj.:
procedure TForm1.ListView1OnCompare(Sender: TObject; Item1, Item2: TListItem;
  Data: Integer; var Compare: Integer)
begin
  ... zrób porównanie ...

  if TListView(Sender).SortDirection = sdDescending then
    Compare := -Compare;
end;

Zdarzenie OnCompare powinno sprawdzać właściwości TListView SortType, SortColumn i SortDirection oraz odpowiednio dostosowywać wynik porównania w zależności od stanu tych właściwości.

Metoda Sort sortuje elementy, jeśli SortType jest inny niż stNone i SortColumn jest przypisany do prawidłowego indeksu kolumny.

Metoda CustomSort wykonuje jednorazowe sortowanie za pomocą dostarczonej funkcji sortowania.

ASortProc: TLVCompare - funkcja sortowania
AOptionalParam: PtrInt - parametr sortowania

Parametr sortowania jest ignorowany (występuje on tylko dla kompatybilności z Delphi). Jeśli ASortProc ma wartość zero, wówczas używane jest sortowanie OnCompare lub sortowanie domyślne.

Zazwyczaj sortowania może zażądać użytkownik. Za każdym razem, gdy użytkownik kliknie nagłówek kolumny, żąda on jakiegoś sposobu sortowania (początkowo rosnąco) albo przełączenia na odwrotną kolejność sortowania (z rosnącego na malejące lub odwrotnie). To nie reguła, ale powszechne oczekiwanie. W przypadku niektórych zbiorów danych wybór sortowania może nie mieć sensu. Jeśli widok listy powinien być sortowany automatycznie, gdy tylko użytkownik kliknie nagłówek kolumny należy użyć właściwość kontrolki TListview AutoSort (wartość domyślna to true). AutoSort nie przyniesie żadnego efektu, gdy właściwość SortType jest ustawiony na stNone.

AlphaSort to wygodna metoda, która zmienia ustawienia na sortowanie rosnąco (SortDirection=sdAscending) w oparciu o tekst (SortType=stText) pierwszej kolumny (SortColumn=0). Zwróć uwagę, że rzeczywiste właściwości uległy zmianie.

Wskaźnik kierunku sortowania

Pochodzący z: https://bugs.freepascal.org/view.php?id=36281

In trunk since r62567

1) Dodaj nową właściwość SortIndicator do TListViewColumn. Właściwość ta kontroluje systemowy wskaźnik sortowania.

Wskaźnik ten pełni wyłącznie funkcję informacyjną. Reprezentuje graficznie kierunek sortowania (ale nie ma żadnego wpływu na sortowanie). Wskaźnik ma 3 możliwe wartości

siNone - nie powinien być pokazywany żaden wskaźnik sortowania
siAscending - powinien być pokazywany wskaźnik rosnący
siDescending - powinien być pokazywany wskaźnik malejący

Właściwość może działać niezależnie od innych właściwości sortowania TListview.

autosort0.gif

2) Dodaj nową właściwość AutoSortIndicator do TListView. Właściwość używa się jako uzupełnienie właściwości AutoSort. Jeśli oba są włączone, kod LCL kontroluje bieżący wybór wskaźnika sortowania kolumn zgodnie z regułami AutoSort.

autosort2.gif

Na początku 2021 r. zauważono, że jeśli używasz Qt5 i masz TListView.SortDirection ustawioną na sdAscending (domyślnie), to ustawienie wskaźnika sortowania kolumny na siDescending wyświetla wskaźnik rosnący. Nie dzieje się tak z GTK2 lub GTK3. Ustawienie SortDirection na sdDescending sprawia, że ​​wszystkie inne kombinacje działają dobrze, więc wydaje się łatwym rozwiązaniem. Zobacz: https://bugs.freepascal.org/view.php?id=38393

Implementacja widżetów

ListView is implemented via TWSCustomListViewClassinterface. ListView jest implementowany za pośrednictwem interfejsu TWSCustomListViewClassinterface.

Metoda Opis
SelectAll Metoda udostępnia parametr AIsSet.

Jeśli parametr jest ustawiony na true, wszystkie elementy powinny być wybrane w widoku. Jeśli jest to false, wszystkie parametry powinny zostać odznaczone.

Ważne jest, aby to zdarzenie nie wyzwalało żadnych innych zdarzeń, ponieważ LCL sam wywoła zdarzenie SelectChange.

Zobacz także


LCL Components
Component Tab Components
Standard TMainMenu • TPopupMenu • TButton • TLabel • TEdit • TMemo • TToggleBox • TCheckBox • TRadioButton • TListBox • TComboBox • TScrollBar • TGroupBox • TRadioGroup • TCheckGroup • TPanel • TFrame • TActionList
Additional TBitBtn • TSpeedButton • TStaticText • TImage • TShape • TBevel • TPaintBox • TNotebook • TLabeledEdit • TSplitter • TTrayIcon • TControlBar • TFlowPanel • TMaskEdit • TCheckListBox • TScrollBox • TApplicationProperties • TStringGrid • TDrawGrid • TPairSplitter • TColorBox • TColorListBox • TValueListEditor
Common Controls TTrackBar • TProgressBar • TTreeView • TListView • TStatusBar • TToolBar • TCoolBar • TUpDown • TPageControl • TTabControl • THeaderControl • TImageList • TPopupNotifier • TDateTimePicker
Dialogs TOpenDialog • TSaveDialog • TSelectDirectoryDialog • TColorDialog • TFontDialog • TFindDialog • TReplaceDialog • TTaskDialog • TOpenPictureDialog • TSavePictureDialog • TCalendarDialog • TCalculatorDialog • TPrinterSetupDialog • TPrintDialog • TPageSetupDialog
Data Controls TDBNavigator • TDBText • TDBEdit • TDBMemo • TDBImage • TDBListBox • TDBLookupListBox • TDBComboBox • TDBLookupComboBox • TDBCheckBox • TDBRadioGroup • TDBCalendar • TDBGroupBox • TDBGrid • TDBDateTimePicker
Data Access TDataSource • TCSVDataSet • TSdfDataSet • TBufDataset • TFixedFormatDataSet • TDbf • TMemDataset
System TTimer • TIdleTimer • TLazComponentQueue • THTMLHelpDatabase • THTMLBrowserHelpViewer • TAsyncProcess • TProcessUTF8 • TProcess • TSimpleIPCClient • TSimpleIPCServer • TXMLConfig • TEventLog • TServiceManager • TCHMHelpDatabase • TLHelpConnector
Misc TColorButton • TSpinEdit • TFloatSpinEdit • TArrow • TCalendar • TEditButton • TFileNameEdit • TDirectoryEdit • TDateEdit • TTimeEdit • TCalcEdit • TFileListBox • TFilterComboBox • TComboBoxEx • TCheckComboBox • TButtonPanel • TShellTreeView • TShellListView • TXMLPropStorage • TINIPropStorage • TJSONPropStorage • TIDEDialogLayoutStorage • TMRUManager • TStrHolder
LazControls TCheckBoxThemed • TDividerBevel • TExtendedNotebook • TListFilterEdit • TListViewFilterEdit • TLvlGraphControl • TShortPathEdit • TSpinEditEx • TFloatSpinEditEx • TTreeFilterEdit • TExtendedTabControl •
RTTI TTIEdit • TTIComboBox • TTIButton • TTICheckBox • TTILabel • TTIGroupBox • TTIRadioGroup • TTICheckGroup • TTICheckListBox • TTIListBox • TTIMemo • TTICalendar • TTIImage • TTIFloatSpinEdit • TTISpinEdit • TTITrackBar • TTIProgressBar • TTIMaskEdit • TTIColorButton • TMultiPropertyLink • TTIPropertyGrid • TTIGrid
SQLdb TSQLQuery • TSQLTransaction • TSQLScript • TSQLConnector • TMSSQLConnection • TSybaseConnection • TPQConnection • TPQTEventMonitor • TOracleConnection • TODBCConnection • TMySQL40Connection • TMySQL41Connection • TMySQL50Connection • TMySQL51Connection • TMySQL55Connection • TMySQL56Connection • TMySQL57Connection • TSQLite3Connection • TIBConnection • TFBAdmin • TFBEventMonitor • TSQLDBLibraryLoader
Pascal Script TPSScript • TPSScriptDebugger • TPSDllPlugin • TPSImport_Classes • TPSImport_DateUtils • TPSImport_ComObj • TPSImport_DB • TPSImport_Forms • TPSImport_Controls • TPSImport_StdCtrls • TPSCustomPlugin
SynEdit TSynEdit • TSynCompletion • TSynAutoComplete • TSynMacroRecorder • TSynExporterHTML • TSynPluginSyncroEdit • TSynPasSyn • TSynFreePascalSyn • TSynCppSyn • TSynJavaSyn • TSynPerlSyn • TSynHTMLSyn • TSynXMLSyn • TSynLFMSyn • TSynDiffSyn • TSynUNIXShellScriptSyn • TSynCssSyn • TSynPHPSyn • TSynTeXSyn • TSynSQLSyn • TSynPythonSyn • TSynVBSyn • TSynAnySyn • TSynMultiSyn • TSynBatSyn • TSynIniSyn • TSynPoSyn
Chart TChart • TListChartSource • TRandomChartSource • TUserDefinedChartSource • TCalculatedChartSource • TDbChartSource • TChartToolset • TChartAxisTransformations • TChartStyles • TChartLegendPanel • TChartNavScrollBar • TChartNavPanel • TIntervalChartSource • TDateTimeIntervalChartSource • TChartListBox • TChartExtentLink • TChartImageList
IPro TIpFileDataProvider • TIpHtmlDataProvider • TIpHttpDataProvider • TIpHtmlPanel
Virtual Controls TVirtualDrawTree • TVirtualStringTree • TVTHeaderPopupMenu