Problem mit Projekt / Befehlen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von De_User, 18. Juni 2006 .

Schlagworte:
  1. 18. Juni 2006
    Hallo!

    Ich muss in Delphi eine Simulation erstellen, weiteres bleibt mir relativ freigestellt. Ich hab mir nun ausgesucht, eine Art Schaltkreissimulation zu erstellen.

    Es ist ein längerer Text aber nicht abschrecken lassen, es ist nicht kompliziert sondern nur ausführlich damit mir zu helfen ist
    Für Delphi Cracks ist es einfach denk ich mal, denn ich bin nur n kleines lam0rchen!

    Man stelle sich das ganze so vor.


    Man hat oben eine reihe von Bildern mit verschiedenen Geräten drauf also z.b. Trafo, Kabel, Glühbirne, also Widerstände... wers noch aus Physik kennt weiß was ich alles meine

    Dann habe ich unten ein Raster also viele viereckige kleine Canvas, in die man dann die einzelnen Komponenten einfügen kann. ich habe mir das so vorgestellt, dass ich erst oben auf eine Komponente bsp. Glühbirne klicke, die dann quasi markiert ist und dann in eines der Felder rund um eine bereits bestehende Komponente, damit es keine lücken geben kann. Anfangs ist schon die Stromversorgung, also der Trafo gegeben. Von da aus kann ich dann oben, unten, links, rechts sachen anschließen wie bsp. weise jetz ne Glühbirne.

    Zum Ende hin soll er - sofern ein vollständiger Schaltkreis vorhanden ist - prüfen ob das alles so funktionieren kann und eigentlich war geplant dass er noch die Widerstände und den Stromverbrauch berechnet.

    Ich habe bislang nur die Bilder, größengleich mit den einzelnen Canvas-Vierecken unten im Raster, damits eingefügt auch schön aussieht

    Zuerst einmal habe ich keine Ahnung wie der Befehl lautet, dass ich ein Bild anklicke und dann unten in die Canvas und er das einfügt.

    Beim problem, dass das ganze in unmittelbarer nähe (oben, unten, links, rechts) von dem bestehenden objekt angefügt werden soll habe ich schon fast gelöst. Ich habe mir das so vorgestellt, dass man meinetwegen 100 kästchen also canvas hat, 10 x10... man beginne oben links mit dem Trafo dann wär der Standort 1. Die Kästchen werden von links nach rechts mit 1 - 10 bezeichnet (attribut) und dann nächste reihe halt 11 - 20 usw bis 100 unten rechts.

    jetz kann ich ausschließlich bei canvas 2 oder 11 etwas anfügen, optimal ein Kabel. Ich denke mal das kann ich mit einer if schleife arrangieren? So von wegen umgangssprachlich "if nachbar=+1 oder eben +10 (in den nächsten reihen dann oder -1 und -10) than do einfügen"

    das wichtigste ist dieser markieren einfügen befehl.... also bild in Canvas kopieren (weil ich ja bspw kabel mehrfach brauche)
    und den rest hoffe ich bekomme ich mit den schleifen und einigen variablen hin...

    Zum Prüfen des schaltkreises weiß ich dass man am ende eben beim Trafo wieder angekommen sein muss sonst gibts n Popup dass man fertig werden muss...

    Nur wie mach ich das mit Widerständen etc??? Und dem Befehl....

    Ich danke euch schon mal seeeehr für anregungen und hoffentlich auch lösungen =)

    10er sind sicher !!!

    MfG

    De_User a.k.a. FerrariGirlNr1

    P.S.: ich muss das ganze am 27.6. abgeben und habe nur die Delphi Bücher Band 1 und 2 von Eckard Modrow (Neue Seite 1) und ca 1 Jahr Delphi kenntnisse also bitte keine zu intime fachsprache
     
  2. 19. Juni 2006
    Also wenn ich das alles richtig verstanden habe, dann willst du, dass wir dir das fertig programmieren oder was ? ?( Weil eine konkrete Frage hast du ja nicht gestellt.
     
  3. 19. Juni 2006
    hm zuerst einmal: ich bin kein delphi-crack, hab aber trotzdem ein paar ideen wie du die sachen eventuell lösen könntest (kannst dein projekt ja auch mal auf rapidshare uppen, dann können sichs alle mal anschauen...)

    also was des mit den bildern angeht: ich würds mit radiobuttons machen, dann musst du schon net auf die bilder selbst zugreifen...
    wie sehen denn die bilder aus? sind die per delphi gezeichnet mit den linto etc befehlen oder von außen importiert? wenn sie von außen importiert sind hab ich keine ahnung wie des gehen soll...
    die zweite frage die du dir stellen musst ist, ob du das ganze objektorientiert machen willst oder net. wenn ja, kann ich dir net mehr helfen weil da bin ich selber in den anfängen. wenn nein, is es glaub ich schwieriger.

    des mit den canvas-teilen und der überprüfun, ob des nachbarn sind würde ich mit einem array lösen... du kannst alle canvas als zweidimensionales arry speichern und dann den "zustand" der zahlen abspeichern. is z. b. das kabel so --- dann als 1 und so | dann als zwei. und wenn du dann was bauen willst fragst du halt ab:
    if array[x-1,y] or array[x+1,y]=1 OR if array[x,y+1] or array [x,y-1]=2 then einfügen
    else fehlermeldung;
    naja dann gibts n befehl orgendwie oncick oder so ne da macht er dann was wo du die maus hingeklcikt hast... wenn dus brauchst kann ichs mal raussuchen ich hab des mal irgendwann gebraucht weiß aber net ob ich des noch hab...
    naja und das mit den widerständen... naja ich hab zwar py mit ner 1 abgewählt (weiß bis heute net wie ich des geschafft hab^^) aber ich kann gar nichts mehr in physik...

    naja hoffe dir helfen meine anregungen und lad des projekt mal hoch wenns fertig is würds mnir gern mal anschauen...

    mfg
    Mabere
     
  4. 19. Juni 2006
    moin,

    jo, ich auch.

    also das mit dem bild-raster würde ich wie schon gesagt mit nem array lösen. Da steht was drüber -> click

    das mit "bild in canvas kopieren"... weiss jetzt nich genau wie du das machen willst, ich machs immer so:

    Code:
    ...
    
    var
    meinbild:TPicture; //globale var für das bild
    
    implementation
    
    {$R *.dfm}
    -------------------------
    
    //dann im OnShow - ereiginis von Form1
    procedure TForm1.FormShow(Sender: TObject);
    begin
     meinbild:=tpicture.create;
    
     meinbild.LoadFromFile('woistdennndasbild');
    end;
    
    //wenn du das bild dann in z.B. ein TImage laden willst:
    
    Image1.Picture:=meinbild;
    

    du könntest auch die bilder per drag&drop auf die felder ziehen. hier mal n einfaches bsp: Image1 auf Image2 ziehen:

    Code:
    procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
    begin
     if Button = mbLeft then
     with Sender as Timage do
     BeginDrag(True);
    end;
    
    procedure TForm1.Image2DragOver(Sender, Source: TObject; X, Y: Integer;
     State: TDragState; var Accept: Boolean);
    begin
     Accept:=True;
    end;
    
    procedure TForm1.Image2DragDrop(Sender, Source: TObject; X, Y: Integer);
    begin
     if Source = image1 then
     begin
     image2.Picture:=image1.picture;
     image1.visible:=false;
     end;
    
    end;
    

    ich hoffe ich konnte dir helfen oder zumindest n paar anregungen geben. wär nice wenn du das fertige project mal hochladen würdest, ich sitze grad an nem ähnlichen problem...

    mfg KnisterToni
     
  5. 19. Juni 2006

    Wie wärs mit durchlesen???

    ich hab fragen gestellt wie z.b. die nach dem Befehl zum Kopieren eines Bildes auf die Canvas oder auch wie ich dass mit der Berechnung der Widerstände hinbekomme....

    KnisterToni und Mabere danke ich schonmal =) Die anregungen sind gut...
    Ich muss es als ObjektOrientiertes Projekt machen und die Bilder habe ich importiert, also als .jpg


    Ja bitte =)

    10er habt ihr schonma. ich gucke ob es mir hilft... WEITER SO =)

    MfG
     
  6. 19. Juni 2006
    also der befehl lautet einfach "canvas.click"
    müsste auch automatisch gemacht werden wenn du n doppelklcik auf die canvas machst...
    und dann halt nur noch der einfügen von den bildern auf die canvas...

    mfg
    Mabere
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.