Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

[Delphi] MDI-applicatie vraag

Anoniem
None
73 antwoorden
  • Ik ben bezig een MDI-programma te schrijven in Delphi 5.

    Nu had ik een vraag: hoe kan met een ToolButton op een MainForm alle ge-opende ChildForms sluiten?

    George.
  • Goeie vraag :D
    Goed antwoord :D

    Zo doe je het: (ik ga er vanuit dat de knop op het MDI form staat)

    [code:1:e7c212964d]
    0. procedure TMainForm.Button1Click(Sender: TObject);
    1. var I: Integer;
    2. begin
    3. for I := 0 to MDIChildCount-1 do
    4. MDIChildren[I].Close;
    5. end;
    [/code:1:e7c212964d]
    Toelichting per regel:
    1: Variabele I declareren die gevuld wordt met het aantal MDI childs (MDIChildCount).
    3: For-loop wordt net zovaak herhaalt als aantal MDI childs (MDIChildCount).
    4: Het betreffende MDI Child sluiten. MDIChildren is een array van een TForm (MDI Child).

    Gaat dat lukken?
  • En omdat jij zo'n goed antwoord geeft stel ik gelijk maar mijn tweede vraag! :D

    Als ik een ChilfForm open zie hem een fractie als klein venster (1 seconde) en vervolgens wordt hij gemaximaliseerd.

    Maar hoe kan ik deze 'tussenstap' weg halen zodat het ChildForm meteen gemaximaliseerd wordt?

    George
  • Goeie vraag :D
    Geen antwoord :(

    Zou het niet weten, heb ff gezocht maar kwam niets zinnigs uit. Ik denk niet dat dit op een normale manier mogelijk is, sorry…

    Wat voor proggie ga je maken?
  • Ach het is ook maar een kleinigheid. :)

    Ik heb nog iets raars: ik plaats een statusbar op mijn MainForm maar die wordt niet weergegeven als de WindowState op wsMaximized staat.
    Staat hij op wsNormal dan wordt de statusbar wel weergegeven.

    Hoe kan ik hem ook in een gemaximaliseerd venster weergeven?

    PS: Ik ben bezig een administratie programma te maken voor een tuinbedrijf van een kennis. Dus met klantenbestand, orderbestand, artikelbestand, enz in een MySQL-database. (website zie sig)
  • Kijk, dat is nou het betere werk :D

    Van die StatusBar heb ik ook last :x , precies hetzelfde als jij maar dan in Delphi 6. Echt heel raar. Ik heb het opgelost om bij de OnShow (of OnCreate) de WindowState pas op wsMaximized te zetten. Dan krijg je hetzelfde als je hebt met die MDI Childs.

    Wat voor drivers gebruik je voor het openen van een MySQL database? Ik de ZEOS Library (open source, http://www.zeoslib.org , echt een dikke aanrader!).
  • [quote:411553f126="Johan Stokking"]Van die StatusBar heb ik ook last :x , precies hetzelfde als jij maar dan in Delphi 6.[/quote:411553f126]
    Dan doe je toch iets niet goed…
  • [quote:e330f01584="Johan Stokking"]
    Wat voor drivers gebruik je voor het openen van een MySQL database? Ik de ZEOS Library (open source, http://www.zeoslib.org , echt een dikke aanrader!).[/quote:e330f01584]

    Momenteel nog MyODBC maar daar heb ik me verder nog niet in verdiept.
    Ik zal eens aan de slag gaan met ZEOS.

    Dat van die WindowState werkt niet, ik heb nog steeds geen statusbar…

    [code:1:e330f01584]
    procedure TMainForm.FormCreate(Sender: TObject);
    begin
    WindowState := wsMaximized;
    end;[/code:1:e330f01584]

    Of klopt ie niet? krijg geen errors…
  • Ja klopt… het is echt heel vreemd, dit komt denk ik door de Align van de Statusbar. Heb je Windows XP? Ik hoop dat ze dit in Delphi 7 Studio opgelost hebben…

    En Haxxor, probeer het zelf maar ff… een MDI applicatie maken met een statusbar onderin en de WindowState of wsMaximized zetten.
  • [quote:4f1d82a71b="Johan Stokking"]En Haxxor, probeer het zelf maar ff… een MDI applicatie maken met een statusbar onderin en de WindowState of wsMaximized zetten.[/quote:4f1d82a71b]
    Dit had ik al gecheckt. Dit probleem ben ik overigens ook nooit tegengekomen in bestaande applicaties.

    Heb het ook net ff met een nieuw project en daarop de TStatusbar gedropt en de state van het form veranderd in wsMaximized en de formStyle veranderd in fsMDIForm. En alles lijkt gewoon goed te gaan…
  • Ja het heeft bij mij ook gewerkt maar in bepaalde situaties werkt het ineens niet meer, heel vaag.
  • ben nu bezig ZEOS te installeren maar het lukt niet echt.

    Ik heb keurig de dll-bestanden gekopieerd, maar hoe moet ik dit installeren in Delphi?
  • :D moment…

    Die hele library downloaden en ergens naar uitpakken.
    Dan in Delphi ZMySql6.dpk (of ZMySql5.dpk voor Delphi 5) openen, compilen en installeren. Da's niet moeilijk toch? :P
  • Handig die Zeos lib! werkt prima!
  • [quote:80d547a3bd="George W. Bush"]Handig die Zeos lib! werkt prima![/quote:80d547a3bd]

    Zeker :)
  • Dat ZEOS is toch niet helemaal perfect.

    Ik kan keurig connecten naar mijn database/tabel en zie de gegevens ook
    als ik op het ontwerpscherm ben.

    Maar als de applicatie wil runnen kan hij de .dcu bestanden van ZEOS niet vinden…

    Waar kan dat aan liggen?
  • Je moet bij Tools -> Environment Options in het tabblad Library en dan bij Library path de regel toevoegen waar de broncode staat van de ZEOS Library. Dan compilen en dan doetie het :D

    Nog problemen? Gewoon vragen.
  • Ik heb weer een vraag! :)

    Hoe kan ik aan het einde van mijn tabel een nieuw record aanmaken waarbij alle velden dus leeg worden en er bij Nr de autonummering doorloopt.

    Als alle gegevens zijn ingevuld moet de record worden ge-updated.

    Hoe doe ik zo iets.

    Bij het updaten moet volgens mij ZEOS UpdateMySQL gebruiken.
  • Ben doodop… ik ga eerst ff slape enn morgenochtend kijk ik ernaar, oke?

    Johan
  • [quote:5ecb8d5228="George W. Bush"]Ik heb weer een vraag! :)

    Hoe kan ik aan het einde van mijn tabel een nieuw record aanmaken waarbij alle velden dus leeg worden en er bij Nr de autonummering doorloopt.

    Als alle gegevens zijn ingevuld moet de record worden ge-updated.

    Hoe doe ik zo iets.

    Bij het updaten moet volgens mij ZEOS UpdateMySQL gebruiken.[/quote:5ecb8d5228]

    Wat gebruik je, de TZMySqlQuery of the TZMySqlTable? Zet je de data in een Grid?

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.