Visual Basic - Szoftverfejlesztés fórum

üzenetek

hozzászólások


lenkei83
(tag)

Szia!

Közben az Excel fórumban kitárgyaltuk, feltöltöttem ide a táblát: [https://1drv.ms/x/s!Ans3TmRiC9RGhaMx1z_INz4zg7X91Q?e=lSc26r]


Diopapa
(addikt)

Sziasztok, egy kis segítség kellene... Van 2 formom, nevezzük az egyiket Egyesnek, a másikat Kettesnek. Az Egyes fő formon deklarálva van egy public változó. Erről a formról van meghívva egy backgroundworker. Ez a BGW a Kettes formon levő függvényt használ. Ezen a Kettes formon levő függvényben az Egyes formon levő public változó tartalmát "nothing"-nek látja. Ugyanezen függvény használata nem BGW-vel természetesen a változó valós értékét mutatja.

Mit rontok el? Válaszaitokat előre is köszönöm!


sztanozs
(veterán)
Blog

Nem adod át a kettes formnak az egyes form létrehozott objektumának a referenciáját.
Ha esetleg Static változó lenne, akkor erre nem lenne szükség, de ez nem egy szép megoldás.


pmonitor
(aktív tag)

Ha egyik formból szeretnél hozzáférni egy másik form metódusához/változójához, az általában rossz program szerkezetre utal. Vb.Net-ben meg tudod oldani, hogy az ilyeneket modulban valósítod meg.

@sztanozs: Meg ha átadná, akkor sem fér hozzá egy control-hoz a DoWork()-ban. Csoda, hogy egyáltalán nem száll el a futásidőben.


sztanozs
(veterán)
Blog

Nem egy kontrolhoz akar hozzáférni (amit amúgy kézzel lehet publikusnak is deklarálni, csak az IDE rakja alapból Private-ba) - ha elolvastad volna a kérdést -, hanem egy publikus változóhoz.

Amúgy tervezésileg tényleg katyvasz, hogy egy BGW egy másik formon levő függvényt használ, de egy változóhoz vagy függvényhez való hozzáférés nem gond.

[ Szerkesztve ]


pmonitor
(aktív tag)

Miért? A Form nem Control?

szerk.:
Valahogy így lehet ezt megcsinálni:
Imports System.Threading
Public Class Form1

Public variable As Integer

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
BackgroundWorker1.RunWorkerAsync(Me)
Timer1.Start()
End Sub


Sub Update()
Text = variable
End Sub

Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Dim frm As Form1 = e.Argument
For i = 1 To 100
If (frm.InvokeRequired) Then frm.Invoke(New MethodInvoker(AddressOf Update), Nothing)
Thread.Sleep(1000)
Next
End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
variable += 1
End Sub
End Class

[ Szerkesztve ]


sztanozs
(veterán)
Blog

Igen, de a Formnak nem a UI Thread által piszkált részében akar bármit is csinálni.


pmonitor
(aktív tag)

Igaz. De akkor meg kérdés, hogy BGW nélkül hogy olvassa ki? És még jól is működik Neki.


sztanozs
(veterán)
Blog

Úgy működött gondolom, hogy a F2 függvénye vagy statikus volt, vagy magát az F2-t a BGW-ben példányosította (pl mint egy progress form).

[ Szerkesztve ]


Diopapa
(addikt)

Köszi, hogy gondolkodtatok rajta, közben megoldottam. Public volt a változó, eddig ezzel nem volt gond ebben a formában csak most a BGW miatt. Most Public Shared lett és egyből átadta az egyik változó az értéket a másiknak.

Köszi mégegyszer.


sztanozs
(veterán)
Blog

Ez milyen VB egyébként? VBA (Office), VB6 vagy VB.NET?


pmonitor
(aktív tag)

Tuti, hogy .Net.


Vladek83
(tag)

Sziasztok!

a következő kód nem azt csinálja, amit szeretnék, 2 tizedesig kellene, hogy számoljon, de sajnos kerekít.:

TextBox1.Text = Format(Val(TextBox1.Text), "0.00")

Turtam a netet, de eddig semmi..?

Üdv,


sztanozs
(veterán)
Blog

Ez csak két tizedesre formálja a kiíratást, ténylegesen nem kerekíti két tizedesre.

Szerintem:
TextBox1.Text = Format(Int(100*Val(TextBox1.Text))/100, "0.00")

[ Szerkesztve ]


Vladek83
(tag)

Szia,

ezt találtam, ez most működik:

Dim aNumber As Double = TextBox1.Text
      TextBox1.Text = aNumber.ToString("n2")

[köszönöm] kipróbálom :R


zakoss
(tag)

Sziasztok,

Abban szeretnék segítséget kérni, hogy van-e valakinek olyan működő scriptje ami outlookban a kijelölt levelek mellékletek,csatolmányait (.docx, .pdf) kinyomtatja ha meghívom a makrót hozzá.

Találtam hozzá oldalakat amiken kis átalakítást kellett hozzátenni, hogy működő legyen, viszont az alapértelmezett nyomtatóra nem küldi ki pl: Print Attachments on Selected Messages

Előre is köszi a segítsgéget.


bszilvagyi
(csendes tag)

Sziasztok!
Esetleg valaki foglalkozott már VB6 alatt webkamera kezeléssel? Elavult dolog, az egyszer biztos, de sajnos a célgép ennyit tesz lehetővé.

Jelenleg az avicap32-vel működik a dolog, viszont a 640x480-as limit elég kevés, a kamera HD-t is tud.
A program maga annyi, hogy egy gomb megnyomására az éppen látható képből elment egyet egy adott helyre.

Olvastam, hogy DirectShow-val is meg lehetne oldani a dolgot, ha bárki tud valami érdemi dolgot hozzáfűzni, megköszönném. :R


Dian
(friss újonc)

Sziasztok,
Nem tudom tud e vki segíteni nekem. Lenne egy megoldandóm, viszont sem a VBA-hoz sem a makrokhoz nem értek, így csak reménykedni tudok, hogy lesz vkinek egy kész megoldása.
Köszönöm szépen előre

Egy több lapból álló excel egyik lapfüléből (legyen ez védett 1) folyamatosan gyűjteni kellene, egy másik lapra automatikusan, hogy mikor, kicsoda, mit, miről, mire módosított. És nyilván ne lehessen kitörölni ezt a fület.
A védett 1 lapfül, ahol módosítani lehet és ezt követni is szeretnénk, ott bizonyos oszlopokba csak bizonyos személyek írhatnak, de ezt egyszerű excel megoldással meg lehetett csinálni.


sztanozs
(veterán)
Blog

A worksheet_change eseményre kell feliratkozni és ott felvinni az eseményt egy új lapra...

üzenetek