Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Visual C++/C# możliwość kopiowania komponentu DataGridView

lukagrom 16 Kwi 2018 09:54 123 6
  • #1 16 Kwi 2018 09:54
    lukagrom
    Poziom 15  

    Pytania jak w temacie. Wiadomo komponent tabelaryczny- orkiestra, mocno wielozadaniowy z możliwością edycji danych wszelakiego typu z grafiką włącznie. Czy istnieje jakaś możliwość w przypadku korzystania z kilku komponentów DataGridView na formie skopiowanie jednego komponentu, któremu nadało się szereg różnych właściwości (czasami czasochłonnej edycji) na pozostałe? Bo tradycyjne kopiuj/wklej akurat w przypadku tego komponentu nie działa. Nowe DataGridView po wklejeniu, co prawda pojawi się na formie, ale będzie "surowy". Problemem jest jak ma się na formie kilka takich tabel i do każdej trzeba dłubać mnóstwo właściwości, lub wklepywanego kodu osobno, a wystarczyło by logicznie z jednej skopiować wszystko na pozostałe.

    0 6
  • #2 21 Kwi 2018 00:39
    LED5W
    Poziom 32  

    Surowy, czyli nawet bez kolumn? U mnie w C# się kopiują.

    0
  • #3 21 Kwi 2018 08:35
    lukagrom
    Poziom 15  

    C++ , goły, szary prostokąt bez skopiowanych/zdefiniowanych właściwości głównych (ColumnCount, RowCount) o innych związanych z formatowaniem, nawet nie wspominając. Inna sprawa, że mam do dyspozycji bardzo stare środowisko (2008), więc może tutaj jest pies pogrzebany i nowsze wersje już potrafią kopiować ze szczegółami ten komponent.

    0
  • #4 21 Kwi 2018 19:46
    LED5W
    Poziom 32  

    Na Visual Studio 2008, C++/CLI też działa...

    0
  • #5 21 Kwi 2018 20:33
    lukagrom
    Poziom 15  

    Bzdura, gdyby działało, to bym nie zakładał tego tematu. Może doszło do jakiegoś nieporozumienia, więc najprostrzy przykład:
    Z palety komponentów układam na formie - dataGridView1.
    W metodzie Form1_Load przypisuję następujące właściwości:

    Code:

    dataGridView1->ColumnCount=10;
    dataGridView1->RowCount=10;

    Następnie kopiuję dataGridView1 i wklejam na formę jako dataGridView2.
    dataGridView2 zupełnie nic nie "odziedziczył" po dataGridView1.
    po F5 (Run), dataGridView1 pokazuje mi się się jako tabela 10 na 10, dataGridView2 jako szary prostokąt.

    0
  • #6 21 Kwi 2018 21:40
    LED5W
    Poziom 32  

    lukagrom napisał:
    W metodzie Form1_Load przypisuję [...]
    I tu jest problem. Designer działa tylko w InitializeComponent (w klasie dodaje lub usuwa tylko zmienne), bo ten kod sam tworzy i wie jak go modyfikować. W innych metodach może być dowolny kod, więc skąd ma wiedzieć co z nim zrobić?
    Jeśli potrzebnych rzeczy nie ma w designerze, jest kilka możliwości:
    - utworzenie własnej kontrolki dziedziczącej z DataGridView
    - utworzenie własnej kontrolki, na której będzie DataGridView
    - utworzenie metody przyjmującej jako argument DataGridView i ustawiającej dla niej potrzebne opcje

    0
  • #7 21 Kwi 2018 21:51
    lukagrom
    Poziom 15  

    Danke, też wiem, że w tym Designerze dla tego akuart komponentu mogę zrobić, tyle co nic. Zupełnie sprawa ma się dla innych podobnych koponentów (edytuących dane) listBoxy,edity, labele, etc. tutaj można kopiować do woli w najbardziej przemyślnej formacji graficznej i tekstowej. Dla kontrastu konkurencyjny StringGrid ze stajni Delphi/C++ Builder przy Copy/Paste przenosi się z najbardziej złożonymi danymi do formatowania i wizualizacją , więc aplikacje tablearyczne, w kórych kopiowanie wielu lomponentów wydaje się nieodzowne, chyba lepiej robić pod skrzydełkami Embarcadero.

    0