Keresés

Új hozzászólás Aktív témák

  • bepken
    veterán

    félreértés, nem a VB-vel van gond, hanem a winforms-sal.
    Pontosabban gond ezzel sincs, csak már lassan 10 éve legacy állapotban létezik. És persze lész még 10 év múlva is, de minek most elkezdeni bárkinek is beleásni magát egy legacy technológiába?

    Amit javaslok helyette a WPF (legújabban windows store), de amit leginkább javaslok az az ASP.NET (MVC). Ezeket mind lehet VB-vel is használni, bár időközben a VB helyett erősen a C# terjedt el, ne lepődje meg, ha a tutorialok 80%-át csak C#-ban fogod találni.

    köszi! :)

    suli kapcsán úgy is muszáj C-vel foglalkozzak...szóval lehet, hogy amúgy sem árt meg, ha inkább a C#-ba merülök el jobban.

    persze azzal is tisztában vagyok, hogy ehhez még rengeteg alapozásra van szükség, csak az irányra voltam kíváncsi.

  • bepken
    veterán

    írtátok korábban, hogy a VB már nem igazán érdemli meg, hogy jobban beleássa magát az ember...
    tehát az volna a kérdésem, hogy melyik az az alternatíva, amivel a VB-hez hasonlóan egyszerűbb programokat lehetne tervezni?

  • bepken
    veterán

    "egyébként engem kifejezetten zavar, hogy sok dolgot a properties résznél és magában a kódban is meg lehet adni...pontosabban az, hogy a properties résznél már beállított értékek nem derülnek ki a kódból. vagy ezzel csak én vagyok így?"

    Ez szvsz előny. Jellemzően sokkal jobban szeretek varázslóval kattintgatni (pár linux-os konzol buzin kívül az emberiség 99,99%-a ugyanígy van ezzel). Ugyanakkor csomó olyan eset létezik, amikor muszáj kódból lekezelned a dinamikusan létrehozott formjaidat, ekkor nagy előny, hogy kétféle megközelítéssel is dolgozhatsz.
    A kódból pedig minden kiderül, ugyanis lekérdezhető.

    igazad van :) sőt! igazából, amikor belefogtam ebbe a kis programba, még azt hittem, ennyit se kell majd a kóddal foglalkoznom... :D

    egy verziót már sikerült megcsinálnom a varázsló segítségével - tehát csak importáltam a táblát, betettem azt az egy szövegdobozt, majd megadtam neki a forrást. szóval valóban sokkal kényelmesebb volt na.

  • bepken
    veterán

    a Form_Load részhez? :B
    1 hete ismerkedem a VB2010expressel, semmi nem evidencia.

    Viszont most megint átnéztem jobboldalt a properties ablakban a "Form1 System.Windows.Forms.Form" listájában a "KeyDown"-hoz tudtam társítani az "ido_KeyDown" szubrutint, és most működik!

    - A form load részt hol találom, és a program "melyik része" ez?
    - Ez a "Form1 System.Windows.Forms.Form" micsuda?

    ja hát én meg ~2 hete, szóval túl sokat én sem tudok segíteni, csak abban, amilyen problémával én is találkoztam eddig :DDD

    nálam a billentyű figyelés így néz ki:

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    KeyPreview = True

    ....

    tehát (az én olvasatomban legalábbis), ha az adott form aktív, akkor figyeli a leütött billentyűket

    illetve van egy "KeyPress" event is:

    Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress

    If Asc(e.KeyChar) = 13 Then

    ....

    ez meg az Enter billentyűt várja (ASCII kód: 13)

    egyébként engem kifejezetten zavar, hogy sok dolgot a properties résznél és magában a kódban is meg lehet adni...pontosabban az, hogy a properties résznél már beállított értékek nem derülnek ki a kódból. vagy ezzel csak én vagyok így?

  • bepken
    veterán

    sziasztok!

    a következő problémám volna:
    teljesen elölről kezdtem a kis művemet, ezúttal külső adatbázisra hivatkozik és ez kellően meg is bonyolította számomra a dolgokat...

    így néz ki a kereső gomb click event:

    Private Sub btnFind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFind.Click

    'telefonszám szövegének formázása
    txtTelNumber.Text = ""
    txtTelNumber.Paste()
    txtTelNumber.Text = Replace(txtTelNumber.Text, " ", "")
    txtTelNumber.Text = Replace(txtTelNumber.Text, "/", "")
    txtTelNumber.Text = Replace(txtTelNumber.Text, "(", "")
    txtTelNumber.Text = Replace(txtTelNumber.Text, ")", "")
    txtTelNumber.Text = Replace(txtTelNumber.Text, "-", "")
    txtTelNumber.Text = Replace(txtTelNumber.Text, "+", "")

    If txtTelNumber.TextLength > 7 Then

    If txtTelNumber.Text.StartsWith("06") Then
    txtTelNumber.Text = txtTelNumber.Text.Substring(2)
    End If
    If txtTelNumber.Text.StartsWith("36") Then
    txtTelNumber.Text = txtTelNumber.Text.Substring(2)
    End If
    End If

    con.Open()
    sql = "SELECT [tel] from tel"
    da.Fill(ds, "tel")
    con.Close()

    For index = 0 To ds.Tables("tel").Rows.Count - 1
    Dim dt As DataTable
    dt = ds.Tables("tel")

    If txtTelNumber.Text = ds.Tables("tel").Rows(index).Item("tel") Then
    lbTelNum.Text = ds.Tables("tel").Rows(index).Item("tel")
    Else
    lbTelNum.Text = ""
    End If

    If lbTelNum.Text = "" Then
    lbTelNum.Text = ""
    lbExist.Text = ""
    Else
    Me.lbTelNum.Text = Me.lbTelNum.Text
    Me.lbExist.Text = "Már létezik!"
    End If
    Next
    End Sub

    a cél továbbra is az volna, hogy a textbox-ba beírt számot keresse meg az access táblában, majd ha megtalálja, azt jelezze.

    ez ugye most úgy néz ki, hogy ha a "txtTelNumber" mezőbe beírt szám benne van a táblában, annak értéke kerüljön át az "lbTelNum" mezőbe (és mellette az "lbExist" is írjon ki valamit) >> hogyha a "lbTelNum" üres, akkor egyszerűen nullázza ki ezt a két mezőt.

    a gyakorlatban ez működik is, de csak az első érték beadásakor....ha jól sejtem, az lehet a gond, hogy a következő kattintáskor már nem fut le a ciklus.
    próbáltam Else ágon újra beadni neki ugyanezt a ciklust, de csúnyán megakasztottam vele a gépet, úgyhogy valószínűnek tartom, hogy nem az lesz a megoldás... :D

    várom az ötleteket, véleményeket! :)

    _____________________________________________________

    szerk.:
    cigam!

    a Form_Load részhez írd be:
    KeyPreview = True

  • bepken
    veterán

    Regexp-el szebb és gyorsabb lenne, de így is jó. Csak ha már véleményt kértél.

    köszi! utánaolvasok majd, hogyan kell használni - mert gyorsan rákeresve nem igazán fogtam fel a lényegét :)

    igazából még két dolgot kellene megoldanom a teljes lelki-béke eléréséhez:
    1. az fent említett karakter felülírást (ezt szerintem meg fogom találni guglival)
    2. ha a keresett érték szerepel a csatolt adatbázisban, azt jelezze. - találtam olyan kódot, amivel elértem, hogy msgbox-ként felugorjon a "hibaüzenet", de nekem label-be lenne ideális (ne kelljen feleslegesen ok gombra kattintgatni)...és valamiért ez nem akar összejönni.

  • bepken
    veterán

    rendben, az egyik kipiálva:

    a Form1 tulajdonságainál >>"KeyPreview = True"

    majd:
    Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress

    If Asc(e.KeyChar) = 13 Then
    Me.dataBindingSource.Filter = "[number] = '" & Me.txtFind.Text & " ' "
    End If

    a másik kérdésemre viszont egyelőre nem találtam megoldást...

    azt hiszem, a telefonszám "konvertálást" is sikerült megoldani, bár a gyakorlatban még csak pár példával próbálkoztam:

    Private Sub btnFind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFind.Click

    txtFind.Paste()
    txtFind.Text = Replace(txtFind.Text, " ", "")
    txtFind.Text = Replace(txtFind.Text, "/", "")
    txtFind.Text = Replace(txtFind.Text, "(", "")
    txtFind.Text = Replace(txtFind.Text, ")", "")
    txtFind.Text = Replace(txtFind.Text, "-", "")
    txtFind.Text = Replace(txtFind.Text, "+", "")

    If txtFind.TextLength > 7 Then

    If txtFind.Text.StartsWith("06") Then
    txtFind.Text = txtFind.Text.Substring(2)
    End If
    If txtFind.Text.StartsWith("36") Then
    txtFind.Text = txtFind.Text.Substring(2)
    End If

    End If

    TelBindingSource.Filter = "[tel] = '" & Me.txtFind.Text & " ' "
    End Sub

    így elviekben a vágólapra vett (legtöbbször keszekusza formátumú) számokat szépen "letisztítja" és ezután keres az adatbázisban

    mennyire elegáns ez így szerintetek?

    illetve arra nem jöttem még rá, hogyan lehetne megoldani, hogy a TextBox-ban található értéket minden alkalommal alapból felülírja.
    nem hozott megoldást az sem, ha beállítottam, hogy 7 karakter hosszú legyen a TextBox, mert ekkor alapból az első 7 karaktert kezdte vizsgálni, ami meg ugye esetemben nem igazán előnyös...

  • bepken
    veterán

    akkor ismét lenne pár kérdésem:

    - hogy lehet azt megoldani, hogy a TextBox-ba beírt szövegre az enter billentyűt lenyomva is rá tudjak keresni? gondolom a TextBox-hoz kell hozzárendelni ezt:

    Private Sub txtFind_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtFind.Enter

    End Sub

    valahogy így kell nekikezdeni? ha ide beírom ugyanazt a feltételt, amit a "Keres" gombnál működik, akkor sem akar összejönni valamiért...

    - a másik kérdésem pedig az volna, hogyan tudnám megoldani azt, hogy egy a vágólapra felvett számot adott formátumra "átalakítsa"?
    tehát mondjuk egy telefonszám esetében törölje a felesleges szóközöket vagy "/ - +" karaktereket

    rendben, az egyik kipiálva:

    a Form1 tulajdonságainál >>"KeyPreview = True"

    majd:
    Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress

    If Asc(e.KeyChar) = 13 Then
    Me.dataBindingSource.Filter = "[number] = '" & Me.txtFind.Text & " ' "
    End If

    a másik kérdésemre viszont egyelőre nem találtam megoldást...

  • bepken
    veterán

    akkor ismét lenne pár kérdésem:

    - hogy lehet azt megoldani, hogy a TextBox-ba beírt szövegre az enter billentyűt lenyomva is rá tudjak keresni? gondolom a TextBox-hoz kell hozzárendelni ezt:

    Private Sub txtFind_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtFind.Enter

    End Sub

    valahogy így kell nekikezdeni? ha ide beírom ugyanazt a feltételt, amit a "Keres" gombnál működik, akkor sem akar összejönni valamiért...

    - a másik kérdésem pedig az volna, hogyan tudnám megoldani azt, hogy egy a vágólapra felvett számot adott formátumra "átalakítsa"?
    tehát mondjuk egy telefonszám esetében törölje a felesleges szóközöket vagy "/ - +" karaktereket

  • bepken
    veterán

    hú ez az "azonFind" borzasztóan szúrja a szemem. Vagy legyen minden elnevezés angol, vagy legyen magyar, de ez a keverés, ez borzasztó.

    próbáltam kicsit egyszerűsíteni - saját magamnak - mivel ez az első vb program, amivel próbálkoznék :)
    más kezéből egem is irritál az ilyen "felemás" munka, úgyhogy átérzem az ellenszenvedet ;]

    valami ötlet esetleg a kérdésemre? :)

  • bepken
    veterán

    sziasztok!

    a sokadik kezdő kérdésem lesz, szóval bocsi azoktól, akik korábban már nem egyet megválaszoltak más topic-ban :D

    egy egyszerű programot szeretnék, ami tartalmaz:
    - egy access adatbázist
    - egy "azonFind" TextBox-ot, ahová beillesztve egy azonosító számot
    - egy "btnFind" gombot, mely segítségével a TextBox-ba beírt azonosítószámot tudom kikeresni
    - egy "btnSave" gombot, mellyel hozzá lehet adni az adott azonosítószámot, hogyha még nincs benne az adatbázisban

    Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.Munka1TableAdapter.Fill(Me.AzonositoDataSet.Munka1)

    End Sub

    Private Sub btnFind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFind.Click
    Me.Munka1BindingSource.Filter = "[Azonosítószám] = '" & Me.azonFind.Text & " ' "

    End Sub

    Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
    Me.Validate()
    Me.Munka1BindingSource.EndEdit()
    Me.TableAdapterManager.UpdateAll(Me.AzonositoDataSet)
    End Sub
    End Class

    eddig meg is vagyok - bár valamiért az adatbázist nem mindig akarja módosítani..... :D

    na de ezekhez az azonosítószámokhoz az adatbázisban tartozik egy checkbox is!
    szeretném, ha a program ezek értékeinek megfelelően (true/false) meghatározott szöveget adna vissza.

    egyébként az ilyesmit Label segítségével szokás kiíratni? (tehát amikor nem MsgBox féle ablakot szeretnénk, hanem csak egy szöveg változót valahova)

    remélem nem kérdeztem sok hülyeséget... :D

    köszi erőre is a segítséget!

Új hozzászólás Aktív témák