Før har Controls[0] været en TDataSource, som DBNavigatoren sættes til at kører på. Nu har jeg så tilføjet noget mere til det pågældende faneblad. Åbenbart således at min DataSource ikke længere har index 0!
Hvordan styrer man det? Eller sagt på en anden måde.- Hvordan sætter jeg min TDataSource til igen at være Controls[0], så jeg ikke får en AccessViolation?
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Det virker som en noget besynderlig måde at gøre tingene på. Man benytter praktisk taget aldrig Controls til at få fat i tingene med (ja ja.. i nogle tilfælde).
Din DBGrid's datasource må da være sat til et eller andet på et tidspunkt? Og det er den du skal have fat i?
Jamen hvis det kan gøres på en smartere måde, er jeg bestemt lydhør!
Jeg har en række faneblade, med hver deres DBGrid. Det jeg vil er, at når et faneblad gøres aktivt, skal DBNavigator.DataSource sættes til den DataSource som den pågældende DBGrid på fanebladet kører på. Med Controls[] kan dette gøres med en linie, men det er måske ikke så hensigtsmæssigt!
Kan man i stedet gøre DataSourcen til child af fanebladet og dermed få sat den DBNavigator? Eller hvordan vil du gøre det?
Tja, det er nok den korteste måde at gøre det på - men som du har set, styrter det hvis du ændre på en tabsheet ;-)
Jeg ville nok bruge PageControl OnChange eventet og så lave en case på ActivePageIndex.
procedure TForm1.PageControl1Change(Sender: TObject); begin case PageControl1.ActivePageIndex of 0 : DBNavigatorORS.DataSource := bla bla 1 1 : DBNavigatorORS.DataSource := bla bla 2 end;
Du skal dog også sætte den f.eks. i FormCreate, da du ikke får eventet 'første gang'.
Du har fuldstændig ret i, at korthuset falder sammen, hvis man laver den mindste ændring. Bare jeg tilføjer en simpel Label bryder opstår der Accessviolation.
Jeg laver det om. Tak for hjælpen.
(Hvis du vil have dine velfortjente point skal du lige oprette et svar i stedet for en kommentar).
Hvis du blot har tilføjet dine grids ved at placerer dem på tabben, så kan du blot skrive navnet - f.eks. DBGrid1.bla bla eller hvad dine grids nu hedder
Ja det er jeg klar over. Jeg tænker mere på, hvis jeg nu har f.eks 8 faneblade, der hver har en grid. Så må man kunne tilgå denne Grid med en linie kode!
Man kan se hvilket faneblad, der er aktivt, og man ved der befinder sig en DBGrid på fanebladet, som child. Den må man kunne tilgå på en smart måde.
Ellers skal jeg skrive den samme linie kode 8 gange. En gang for hver faneblad. Det er det jeg undgå med at benytte Controls[0].
Nu skal jeg nok lade være med at plage dig mere. :o)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.