Controls dupliceren in nieuwe tabpage bij dubbelklik op datagridview rij

Status
Niet open voor verdere reacties.

sabthal

Gebruiker
Lid geworden
13 sep 2011
Berichten
81
Hallo,

Zoals de titel al erg omschrijft, ik ben al een tijdje op zoek om een goede manier te zoeken om een formulier te dupliceren.
Heb ook al even op de bestaande topics gezocht maar het enige waar ik steeds op uit kom is webbrowsers waarbij tabbladen gekopieerd worden etc.

Ik zal hier een aantal plaatjes plaatsen om de situatie te verduidelijken:

Je komt bij het starten van het programma binnen op dit scherm:
screenie1.jpg

De volgende code word uitgevoerd bij het dubbelklikken op een geselecteerde rij (het is uiteindelijk de bedoeling dat het gerecht wat je geselecteerd hebt ervoor komt):
Code:
Private Sub GerechtDataGridView_CellContentClick_1(sender As Object, e As DataGridViewCellEventArgs) Handles GerechtDataGridView.CellContentDoubleClick
Gerechten.Show()
End Sub

Dan opent dit form:
screenie2.jpg

Hierachter zit een hele lap code waar ik controls op heb toegevoegd.

Mijn concrete vraag is: how dupliceer ik de content op de 2e screenshot naar tabblad "Gerecht2" als ik terugkeer naar screenshot1 en nog een gerecht open?
Het is ook belangrijk dat hij het formulier niet kloont zodat ik 2x hetzelfde gerecht op 2 verschillende tabpages heb :)

Extra informatie: Hier zit een Lokale SQL database achter omdat ik de applicatie nu test.

Alvast hartelijk bedankt voor een tip of opmerking!!!
 
Hoi,

Je zal wel weer moeten rusten op de code die je gebruikt om alle controls te 'tekenen', maar dan kan je verder deze code gebruiken:
[CPP] ''//Maak de nieuwe tab aan
Dim TabPage As New TabPage
''//En vul die met de controls
TabPage.Controls.Add(New Button)

''//Voeg de tab toe
Form2.TabControl1.TabPages.Add(TabPage)[/CPP]

Het is dus wel een klein voorbeeldje en je zal dus zelf de hele code voor de textboxen enzovoorts erin moeten zetten. Daarbij moet je dus ook zorgen dat de teksten veranderen. Maar dat zit bij de controls zelf.

MartinJM
 
Bedankt voor het begin. Ik begrijp dat alle controls op het form 1 voor 1 gedeclareerd moeten worden.
De meeste herhalende controls zou ik eventueel met een for loop kunnen doen :)

Ik heb een begin en zal post als het me gelukt is (of niet lukt), bedankt Martin!
 
Ik denk dat als je een UserControl maakt dit een stuk eenvoudiger is. Dan maak je de layout 1x en zet je gewoon het usercontrol in de tab.

Je hebt een soort gelijk probleem op de pagina zelf. Hoe heb je dit gedaan? Ik neem aan (hoop) dat je niet bij de ingredienten allemaal losse controls hebt zoals comboboxIngredients1 t/m comboboxIngredients20 en ook voor de aantallen en de verwijder knopjes etc

Ook zou je het kunnen doen zoals je bij de bereidingswijze hebt: een aantal waar je doorheen kunt bladeren. Misschien dat je dit zou kunnen doen voor de gerechten zodat je alles ook maar 1x hoeft te maken op het form.
 
Helaas wel Bloodshed,

Ik zal je mijn code besparen maar heb jij dan een beter voorstel hoe je toch 24 individuele ingrediënten in een record kan stoppen + aantallen?
Ik bereken de calorieën d.m.v een rekensom, tevens totaal calorieën etc.

Ik zal mijn code toch posten in de zin van een ZIP file.
De form laden waarschijnlijk ook traag door mijn slechte manier van programmeren.
http://speedy.sh/qaPn2/Kookboek2.rar (uploaden hier ging mis helaas)
 
Kijk eens naar usercontrol.
Hier zou je de layout van je gerechten pagina. Het werkt ongeveer hetzelfde als je het nu in een form hebt gemaakt alleen dan kun je er eenvoudig kopieen van maken en gebruiken in tabs of andere forms.




==

Ik wou zeggen dat het niet zozeer uitmaakt hoe je je data opslaat maar hoe je het op het scherm tovert.

Wat als iemand nu 30 ingredienten wilt gebruiken? (ok misschien meer dan ooit nodig, maar het gaat om het idee)
En als er bijna nooit meer dan 15 worden gebruikt is het zonde van de ruimte van de andere ingredienten die altijd open staan.
En als iemand er 10 heeft instaan en de eerste 5 weghaalt, moet de gebruiker dan alles zelf opschuiven naar de eerste regel?

Je kunt misschien de lijst in een listbox/listview stoppen en wijzigen met een dubbelklik (klein popup schermpje om aantallen te wijzigen).
In plaats van 30 verwijder knopjes hoef je dan alleen te kijken welke geselecteerd is en deze dan te verwijderen.
(standaard add/edit/remove knopjes)


Heb even in je project gekeken hoe je het opslaat maar 50 extra kolommen in je gerecht record is niet erg handig.
Je zou een aparte table kunnen maken waar je het GerechtenID, IngredientID, Aantal opslaat. Dan kun je er zoveel opslaan als je wilt en dan eruit halen met het gerechten id.

GerechtID IngredientID Aantal
1, 1, 50
1, 2, 20
1, 3, 3
1, 5, 50
1, 7, 2


Hier zou je allemaal naar kunnen kijken zodra je het probleem van je gerechten pagina's hebt opgelost aangezien het nu gewoon werkt.
Ook zou ik eens kijken wat je allemaal in classes kunt zetten. Zoveel code in één bestandje is bijna niet te overzien. Misschien voor jezelf nog wel een beetje maar al helemaal niet voor andere die naar je code zouden moeten kijken :P

Als je hier aan zou beginnen zou ik even een backupje maken voor je vanalles gaat veranderen. Maar ik denk dat je dat wel al eens gedaan hebt omdat je project kookboek2 heet :P
 
haha ja klopt, heel erg bedankt voor de tips, ik ga er na pasen mee bezig.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan