Spalten in einem Grid kopieren

Rund um die LCL und andere Komponenten
Antworten
braunbär
Beiträge: 369
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: 64Bit
Wohnort: Wien

Spalten in einem Grid kopieren

Beitrag von braunbär »

Ich habe begonnen, mich etwas ausführicher mit dem Lazarus TGrid zu beschäftigen (bis jetzt habe ich im wesentlich nur verwendet, was ich von Delphi kenne), und bin verblüfft über die Möglichkeiten - das geht wirklich sehr weit über das hinaus, was das Delphi TGrid bietet - eine Menge von dem, was ich für meine Delphi Grids dazuprogramiert habe, ist hier fix und fertig und zum Teil auch komfortabler gelöst.

Jetzt hänge ich aber mit einer vermutlich einfach lösbaren Frage.
Wenn ich in einem TGrid mehrere gleichartige Spalten brauche, wie kann ich die Eigenschaften der Spalte in eine neue Spalte übernehmen? Der GridspaltenEditor erlaubt nur das hinzufügen und das Löschen von Spalten, und während man sonst Komponenten mit allen Eigenschaften mit strg-c, strg-v im Formeditor duplizieren kann, habe ich nicht herausgefunden, wie man das mit Gridspalten machen kann.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Spalten in einem Grid kopieren

Beitrag von wp_xyz »

Richtig, da müsste man den Spalteneditor etwas erweitern. Alternativ kannst du die lfm-Datei editieren: im Formulareditor rechte Maustaste > "View Source (.lfm)", das Grid suchen, Spalteneintrag (nach "Columns" zwischen "Item" und "end") kopieren (unten in fetter Schrift) und an gewünschter Stelle wieder einfügen. Speichern. Es dürfte klar sein, dass man da eine Menge zerstören kann, daher vorher eine Sicherungskopie der LFM-Datei anlegen.

Code: Alles auswählen

object Form1: TForm1
  Left = 345
  Height = 240
  Top = 129
  Width = 676
  Caption = 'Form1'
  ClientHeight = 240
  ClientWidth = 676
  LCLVersion = '2.1.0.0'
  object StringGrid1: TStringGrid
    Left = 10
    Height = 303
    Top = 8
    Width = 603
    Columns = <   
      item
        ButtonStyle = cbsCheckboxColumn
        Title.Caption = 'Spalte A'
        Width = 40
      end   

      item
        Alignment = taRightJustify
        Title.Caption = 'Name'
      end   
      item
        ButtonStyle = cbsButtonColumn
        Title.Caption = 'Title'
      end   
      item
        ButtonStyle = cbsCheckboxColumn
        Title.Caption = 'Spalte B'
      end>
    TabOrder = 0
  end
end 

braunbär
Beiträge: 369
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: 64Bit
Wohnort: Wien

Re: Spalten in einem Grid kopieren

Beitrag von braunbär »

Hmm, schon klar, dass das so geht, aber ich möchte wenn irgend möglich das direkte Bearbeiten von lfm Dateien vermeiden, weil das doch eher fehleranfällig ist. Eventuell mache ich einen feature request, ich glaube nicht, dass ich der einzige sein werde, der das immer wieder braucht.

Antworten