Zadávání a správa párových dat.   otázka

VB.NET, WinForms

Programuji vodohospodářský výpočet ve VB.NET. Hledám optimální způsob jak zadávat a spravovat vstupní data, která se v našem oboru běžně označují jako párová. Např. kóta hladiny - objem nádrže, čas - průtok apod., bývá toho cca 10 až 30 řádků. Dobře se to řeší třeba v MS Excel a VBA. Potřebuji ale udělat řešení nezávislé na MS Excel. Zkusil jsem použít komponentu DataGridView, ale narážím na velmi nepříjemná omezení. Potřebuji např. pracovat s vybranou skupinou buněk a to ať uživatelem, nebo programem. Narážím na to, že kolekce vybraných buněk je "read only" a dál se nedostanu.

Nemáte někdo zkušenost jak optimálně řešit zadávání a správu takovýchto vstupních dat pro výpočty? Neexistuje nějaký lepší způsob, než přes DGV?

Příklad:

Definoval jsem komponentu DGV jako caraPloch_grid a pole aPlochy1 pro ukládání údajů o kótě hladiny a zatopené ploše. Takhle načtu do pole hodnoty zadané uživatelem do DGV. Nejde ale zadávat data do DGV pomocí copy - paste. Nejde pracovat s vybranými buňkami.

Public aPlochy1(,) As Single

Sub Button1Click(sender As Object, e As EventArgs)

Dim delka1 As Integer = caraPloch_grid.RowCount

ReDim aPlochy1(1, delka1 - 2)

For i As Integer = 0 To delka1 - 2

aPlochy1(0, i) = CSng(caraPloch_grid.Item(0, i).Value)

aPlochy1(1, i) = CSng(caraPloch_grid.Item(1, i).Value)

Next

caraPloch_grid.SelectAll

caraPloch_grid.SelectedCells.Clear

End Sub

Vymazání buněk na konci kódu nefunguje pro "read only".

Kdyby mi šlo jen o vymazází buněk, použiji "caraPloch_grid.Rows.Clear", to funguje, ale pracovat s vybranými buňkami by se mi hodilo i pro další práci.

Děkuji předem za radu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pro psaní kódu používejte tlačítka s názvem jazyka, aby se v tom dalo lépe orientovat...

Jak ten DataGridView plníte?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dík za připomínku.

DataGridView bude plnit uživatel. Zapisují se do něj údaje, např. v tomhle případě nadmořské výšky hladiny nádrže a odpovídající zatopená plocha. Měl by mít i možnost data vložit (copy - paste) z libovolného tabulkového procesoru nebo texťáku. Po stisknutí tlačítka se údaje zapíší do pole aPlochy1 a to bude jednou ze vstupních proměnných dalšího výpočtu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Systémem Copy-Paste to asi nepůjde, ale pokud by zdrojový soubor byl pokaždé v tom samém formátu, bylo by možné data "importovat" automaticky tak, že ten soubor by byl jako zdroj dat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Smiřuji se po mnohých pokusech se zjištěním, že .NET neposkytuje žádnou relativně jednoduchou možnost, jak vytvořit uživatelsky přívětivé rozhraní pro zadávání a správu proměnných typu polí.

Myslel jsem si, že neprogramuji něco neobvyklého, že takový problém už někdo přede mnou řešil, že tvůrci .NET předpokládali, že něco takového bude potřeba. Ale opak je nejspíš pravdou.

Nezbyde, než hledat jiné cesty.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

.Net FW má takových možností nespočet. To, že je sám neznáte, neznamená,že neexistují.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Myslím, že než kopírovat ručně nějaká data, je pro uživatele jednodušší, když si je program natáhne automaticky sám... Řešení nabízí .NET skutečně dost, je potřeba se jen zamyslet a vybrat to nejvhodnější...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Proto jsem tady, abych se poradil a něco s vaší pomocí vyhodnotil jako nejlepší.

Jde mi především o uživatelsky přívětivé jednoduché rozhraní pro zadávání a upravování párových vstupních dat pro výpočet.

Vytvořit soubor a pak ho natáhnout do programu je jednoduché - ale z hlediska uživatele to rozhodně není to pravé. Právě tak práce s databází.

Hledám co nejjednodušší (z pohledu uživatele) propojení mezi proměnou typu dvourozměrného pole a uživatelským rozhranním.

Děkuji za náměty.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

cituji:

"Měl by mít i možnost data vložit (copy - paste) z libovolného tabulkového procesoru nebo texťáku. "

Pokud mám ta data v nějakém souboru, pak je můžu jednoduše bez uživatelovo práce "navíc" programově natáhnout do DGV. Nechápu, co na tom "z hlediska uživatele to rozhodně není to pravé"...

Co jednoduššího by si mohl uživatel přát, než že to program udělá sám?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

V naší branži se většinou nepracuje takhle jednoduše.

Uživatel má zpravidla různorodé údaje v Excelu, OOCalc, nějakém texťáku a pod. Dojde pokaždé trochu jiným způsobem k nějakým hodnotám. Z těch vybere určitou část a zkopíruje ji do clipboardu. Pak je chce vložit do programu, který vytvářím. Nebude kvůli tomu zvlášť vytvářet nějaký jiný soubor, který můj program potom natáhne. Takhle to opravdu nechci.

Chci vytvořit rozhranní, do kterého půjdou párová data jednoduše vkládat - přímo psát nebo "pejstnout", nejlépe s možností oba způsoby kombinovat, vložená data budou vidět a bude možnost je ještě upravovat. Než se spustí výpočet. Jen to má opravdu smysl.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Předpokádám, že asi tak 30% budoucích uživatelů mého programu bude mít vstupní data někde v excelovském souboru spolu s dalším "maglajzem", na kterém zatím pracovali nebo ho někde sesbírali. Nastavit program tak, aby načetl určené rozmezí buněk z excelovského souboru (pokaždé to bude nejspíš někde jinde) není problém a určitě tuhle možnost budu taky poskytovat. Ale neměla by být jediná.

Někdo bude mít vstupní data v jiném spreadsheedu, textově v jiném formátu, na útržku papíru, co si poznamenal v terénu a pod. S tím vším bych chtěl, aby byla možnost co nejkomfortněji pracovat.

Jsem vodohospodář a matematik. Svoje modely a výpočty dělám pro svou vlastní potřebu většinou v Matlabu a Simulingu. .NET má dost prima nástrojů pro tu modelovací matematickou část.

Jen to uživatelské rozhraní se mi nedaří a nedaří podle mých představ ....

Proto hledám radu a pomoc od zkušených programátorů v .NET

Dík :-).

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback