AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Array oder Integer?

Ein Thema von rhodan · begonnen am 19. Mär 2014 · letzter Beitrag vom 20. Mär 2014
Antwort Antwort
Seite 1 von 3  1 23   
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#1

Array oder Integer?

  Alt 19. Mär 2014, 20:34
Hi!

Ich bastle an einem geografie-lernprogramm für schüler. ich benutze die komponente HotSpotImage von TMS die es mir ermöglicht verschiedene Länder anklickbar zu machen. Das Problem bei Inselgruppen bzw in diesem Fall bei kanada ist es das Wasser zwischen den "Inseln" bzw dem "festland" liegt, ich also für kanada mehr als einen Hotspot habe der hervorgehoben werden soll wenn man mit der maus darüber fährt..

Hotspot 50-68 gehören alle zu Kanada und sollen hervorgehoben werden, wann immer man mit der maus über einen von ihnen fährt...momentan ist es allerdings so, das NUR alles hervorgehoben wird wenn ich über hotspot 50 fahre...ich bin mir nicht sicher ob ich 50-68 in nem array deklarieren sollte? rein als integer scheint es nicht zu funktionieren ...

Code:
procedure Tworldmapsource.hsiHotSpotEnter(Sender: TObject; HotSpot: THotSpot);
var
 i:Integer;
begin
if hotspot = hsi.HotSpotByName('Kanada') then
begin
for I := 50 to 68 do

hsi.HotSpots[i].HERVORHEBEN:= true;
end;
end;
hat jemand ne ahnung wo der fehler liegt? "I" startet natürlich bei 50, aber ich dachte delphi würde auch die anderen zahlen bis 68 gleichwertig behandeln..

wie deklariere ich die 50-68 das die zahlenfolge nicht von vorn bis hinten abgearbeitet wird?
hoffe ich habs einigermaßen gut erklärt

danke für hilfe
robin

Geändert von rhodan (19. Mär 2014 um 20:36 Uhr)
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Array oder Integer?

  Alt 19. Mär 2014, 20:49
Der Fehler liegt nicht in dem Code, den du uns gezeigt hast. Die Schleife ist korrekt.

Werden denn mehr Bereiche hervorgehoben, wenn du statt der Schleife zB nur das machst?
Delphi-Quellcode:
if hotspot = hsi.HotSpotByName('Kanada') then
  begin
    hsi.HotSpots[50].HERVORHEBEN:= true;
    hsi.HotSpots[51].HERVORHEBEN:= true;
    hsi.HotSpots[52].HERVORHEBEN:= true;
  end;
Wenn nicht, dann liegt der Fehler irgendwo anders.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Array oder Integer?

  Alt 19. Mär 2014, 20:53
Hast denn irgendwie eine Beziehung zwischen Kanada und den Hotspots von 51-68 hergestellt?

HotspotByName gibt den ersten Eintrag zurück, der unter dem Namen gefunden wird.

Also musst du anders vorgehen.

Hole dir den Namen zum aktuellen Hotspot.
Durchlaufe alle Hotspots und vergleiche den Namen mit dem gefundenen. Bei Übereinstimmung diesen Hotspot hervorheben
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (19. Mär 2014 um 20:57 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: Array oder Integer?

  Alt 19. Mär 2014, 20:55
@rhodan

Ich würde in einem Array festlegen welche Hotspts zusammengehören. Wird eines davon angeklickt, gehst du die ganze Liste durch und aktivierst du auch die anderen.
  Mit Zitat antworten Zitat
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#5

AW: Array oder Integer?

  Alt 19. Mär 2014, 20:59
ne..selbst wenn ich den code probiere
Code:
procedure Tworldmapsource.hsiHotSpotEnter(Sender: TObject; HotSpot: THotSpot);
var
 i:Integer;
begin
if hotspot = hsi.HotSpotByID('Kanada') then
begin


hsi.HotSpots[50].ShowClick:= true;
hsi.HotSpots[51].ShowClick:= true;
hsi.HotSpots[52].ShowClick:= true;
hsi.HotSpots[53].ShowClick:= true;
hsi.HotSpots[54].ShowClick:= true;
hsi.HotSpots[55].ShowClick:= true;
hsi.HotSpots[56].ShowClick:= true;
hsi.HotSpots[57].ShowClick:= true;
hsi.HotSpots[58].ShowClick:= true;
hsi.HotSpots[59].ShowClick:= true;
hsi.HotSpots[60].ShowClick:= true;
hsi.HotSpots[61].ShowClick:= true;
hsi.HotSpots[62].ShowClick:= true;
hsi.HotSpots[63].ShowClick:= true;
hsi.HotSpots[64].ShowClick:= true;
hsi.HotSpots[65].ShowClick:= true;
hsi.HotSpots[66].ShowClick:= true;
hsi.HotSpots[67].ShowClick:= true;
hsi.HotSpots[68].ShowClick:= true;
end;
end;
hab ich das selbe ergebnis..scheint so als würde die komponente nur auf den hotspot reagieren der als erstes KANADA heisst...sowas blödes...alle anderen inseln werden einzelnd hervorgehoben, nur wenn ich auf den hotspot 50 gehe markiert er alle...grrrrrr

@ sir rufo:
ja wenn ich einen hotspot erstelle bekommt er automatisch ne nummer und ich habe allen Kanada als namen gegeben

@ popov: haste nen beispiel? mit arrays hab ich bis jetzt kaum gearbeitet leider, habs per google kurz versucht aber bin auf granit gestossen

Geändert von rhodan (19. Mär 2014 um 21:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Array oder Integer?

  Alt 19. Mär 2014, 21:05
Kannst du von dem Hotspot den zugeordneten Namen holen?
Dann ist dein Problem gelöst
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#7

AW: Array oder Integer?

  Alt 19. Mär 2014, 21:13
den namen holen? ich dachte das hätte ich mit
Code:
if hotspot = hsi.HotSpotByName('Kanada') then
begin
schon getan?
ich hatte gehofft er greift damit auf alle hotspots zu die diesen namen tragen...ich würde statt der integer variante gerne das mal mit nem array probieren..wie kann ich 50..68 in nem array fix deklarieren und hier anwenden als "i" ?

habt ihr nen tip?
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#8

AW: Array oder Integer?

  Alt 19. Mär 2014, 21:24
Nee, die Funktion liefert genau einen HS, vermutlich den ersten. Kannst Du anhand des THotSpot nicht den Namen herausfinden und dann einfach alles mit gleichem Namen markieren?
  Mit Zitat antworten Zitat
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#9

AW: Array oder Integer?

  Alt 19. Mär 2014, 21:34
ich dachte ich hätte genau das schon getan indem ich nach dem hotspotnamen gesucht habe...oder welche möglichkeit meinst du...mit rausfinden?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: Array oder Integer?

  Alt 19. Mär 2014, 21:37
den namen holen? ich dachte das hätte ich mit
Code:
if hotspot = hsi.HotSpotByName('Kanada') then
begin
schon getan?
Wie soll das möglich sein?

Wenn die Funktion alle Hotspots zurückliefert die zu Kanada gehören, dann würde der Vergleich niemals passen (Ein Apfel ist immer ungleich einem Korb Äpfel).
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz