![]() |
Automatisierung
Ich habe doch noch leichte Probleme mit dem Grund Menu.
Benötige da noch ein paar Ideen oder Hilfestellungen. Es geht mir vor allem um die Automatisierung das Fenster dynamisch zu zerstören wenn es nicht mehr gebraucht wird. Im Moment muss ich an vielen Positionen PopUpMenu.DestroyWindow aufrufen um das Fenster zu schließen. Hat jemand eine Idee wie man das machen könnte das es dynamisch\Automatisiert abläuft oder es an nur einer stelle geschieht? Wie macht das denn ein normales Menu denn da muss man nicht jedes Mal eine Funktion aufrufen welche das Fenster zerstört. Alleine das erstellen ist schon aufwendig. Hier mal der Code! (Nicht kopiert selbst erstellt) LOL!
Delphi-Quellcode:
procedure CreateMyPopUpMenu(WinHandle: HWND);
var PrivateFont: PWideChar; begin PopUpMenu := CTRL_PopUpMenuCreate; PopUpMenu.Width := 215; PopUpMenu.Height := 366; PopUpMenu.SkinConfigFile := PWideChar(DefSkin); PopUpMenu.UseVistaCrystal := CheckCrystal.GetCheckButtonStatus(CheckCrystal.Handle); PopUpMenu.UseVistaBlur := CheckAeroBlur.GetCheckButtonStatus(CheckAeroBlur.Handle); PopUpMenu.SideBarCaption := 'KVideo Player'; PopUpMenu.SideBarCaptionLeft := 5; PopUpMenu.SideBarCaptionTop := 245; gPMenu.hPopUpHandle := PopUpMenu.CreatePopUpMenu(MainHandle); if gPMenu.hPopUpHandle <> 0 then begin AddPopUpControls(gPMenu.hPopUpHandle); PrivateFont := PWideChar(SKAERO_FOLDER + 'Menu\SideBar.ttf'); PopUpMenu.FontName := 'Nasalization Free'; PopUpMenu.FontSize := 14; PopUpMenu.CreatePrivateFont(PrivateFont); gPMenu.PopUpMenu := gPMenu.hPopUpHandle; gPMenu.bPopupMenu := True; end; end;
Delphi-Quellcode:
gruss
procedure AddPopUpControls(WinHandle: HWND);
var ImagePathSid: WideString; ImagePathSel: WideString; ImagePathSep: WideString; IconPath: WideString; IconArrowPath: WideString; Enabled: BOOL; Color: COLORREF; begin // Icon Pfade ImagePathSel := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_Select.png'; ImagePathSep := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_Seperator.png'; ImagePathSid := SKAERO_CONFIG_GetSkinFolder + 'Menu\SideBar.png'; IconArrowPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\Arrow.ico'; // Aktiven Status prüfen und Farbe zuweisen Enabled := (KVideo_GetPlayerState <> psNotReady); if Enabled then Color := SKAERO_POPMENUHILITE else Color := $FF737373; // SeitenBar PopUpMenu.AddSideBar(WinHandle, IDM_SIDEBARFRAME, ImagePathSid, 2, 2, 21, 362, 0, false, true); // About IconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_About.ico'; PopUpMenu.AddButton(WinHandle, IDM_ABOUT, ImagePathSel, IconPath, 'About', 24, 2, 189, 20, SKAERO_POPMENUHILITE, 1, 0, Left, 20, 'Oops...' + CHR(13) + 'Are they in the wrong place?'); // Seperator PopUpMenu.AddButton(WinHandle, IDM_SEPERATOR, ImagePathSep, '', '-Appearance-', 24, 22, 189, 20, SKAERO_ACTIVECAPTION, 1, 0, Center, 20, '',false); // Skins IconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_SkinFolder.ico'; PopUpMenu.AddButton(WinHandle, IDM_SKIN, ImagePathSel, IconPath, 'Skins', 24, 42, 189, 20, SKAERO_POPMENUHILITE, 1, 0, Left, 20, '', true, IconArrowPath); // Seperator PopUpMenu.AddButton(WinHandle, IDM_SEPERATOR1, ImagePathSep, '', '-VideoFilter-', 24, 62, 189, 20, SKAERO_ACTIVECAPTION, 1, 0, Center, 20, '', false); // Filter IconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_Filter.ico'; PopUpMenu.AddButton(WinHandle, IDM_FILTER, ImagePathSel, IconPath, 'Filter', 24, 82, 189, 20, SKAERO_POPMENUHILITE, 1, 0, Left, 20, '', true, IconArrowPath); // LAV Filter Configuration IconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_Filter.ico'; PopUpMenu.AddButton(WinHandle, IDM_LAVFILTERCONFIG, ImagePathSel, IconPath, 'LAV Filter Configuration', 24, 102, 189, 20, Color, 1, 0, Left, 20, '', Enabled, IconArrowPath); // Seperator PopUpMenu.AddButton(WinHandle, IDM_SEPERATOR2, ImagePathSep, '', '-File Dependencies-', 24, 122, 189, 20, SKAERO_ACTIVECAPTION, 1, 0, Center, 20, '', false); // Add File IconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_File.ico'; PopUpMenu.AddButton(WinHandle, IDM_ADDFILE, ImagePathSel, IconPath, 'Add File', 24, 142, 189, 20, SKAERO_POPMENUHILITE, 1, 0, Left, 20, ''); // Seperator PopUpMenu.AddButton(WinHandle, IDM_SEPERATOR3, ImagePathSep, '', '-Options-', 24, 162, 189, 20, SKAERO_ACTIVECAPTION, 1, 0, Center, 20, '', false); // Settings IconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_Option.ico'; PopUpMenu.AddButton(WinHandle, IDM_OPTION, ImagePathSel, IconPath, 'Settings', 24, 182, 189, 20, SKAERO_POPMENUHILITE, 1, 0, Left, 20, '', true, IconArrowPath); // SubTitle Config IconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_SubTitlecfg.ico'; PopUpMenu.AddButton(WinHandle, IDM_SUBTITLECONFIG, ImagePathSel, IconPath, 'SubTitle Config', 24, 202, 189, 20, Color, 1, 0, Left, 20, '', Enabled); // Show MediaFile Property if (KVideo_MediaInfoServiceReady) then begin Enabled := True; Color := SKAERO_POPMENUHILITE; end else if not(KVideo_GetMediaProperty(aMediaProperty)) then begin Enabled := false; Color := $FF737373; end; IconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_Info.ico'; PopUpMenu.AddButton(WinHandle, IDM_MEDIAFILEPROPERTYS, ImagePathSel, IconPath, 'Show MediaFile Property', 24, 222, 189, 20, Color, 1, 0, Left, 20, '', Enabled); // Select Video Track if (aMediaProperty.NumVideoStream = 0) then begin Enabled := false; Color := $FF737373; end else begin Enabled := True; Color := SKAERO_POPMENUHILITE; end; IconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_Video.ico'; PopUpMenu.AddButton(WinHandle, IDM_VIDEOSTREAM, ImagePathSel, IconPath, 'Select Video Track', 24, 242, 189, 20, Color, 1, 0, Left, 20, '', Enabled, IconArrowPath); // Select Audio Track if (aMediaProperty.NumAudioStream = 0) then begin Enabled := false; Color := $FF737373; end else begin Enabled := True; Color := SKAERO_POPMENUHILITE; end; IconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_Audio.ico'; PopUpMenu.AddButton(WinHandle, IDM_AUDIOSTREAM, ImagePathSel, IconPath, 'Select Audio Track', 24, 262, 189, 20, Color, 1, 0, Left, 20, '', Enabled, IconArrowPath); // Select SubTitle Track if (aMediaProperty.NumSubTitleStream = 0) then begin Enabled := false; Color := $FF737373; end else begin Enabled := True; Color := SKAERO_POPMENUHILITE; end; IconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_SubTitle.ico'; PopUpMenu.AddButton(WinHandle, IDM_SUBTITLETRACK, ImagePathSel, IconPath, 'Select SubTitle Track', 24, 282, 189, 20, Color, 1, 0, Left, 20, '', Enabled, IconArrowPath); // Chapter if (aMediaProperty.NumChapter = 0) then begin Enabled := false; Color := $FF737373; end else begin Enabled := True; Color := SKAERO_POPMENUHILITE; end; IconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_Chapter.ico'; PopUpMenu.AddButton(WinHandle, IDM_CHAPTER, ImagePathSel, IconPath, 'Chapter', 24, 302, 189, 20, Color, 1, 0, Left, 20, '', Enabled, IconArrowPath); // Seperator PopUpMenu.AddButton(WinHandle, IDM_SEPERATOR4, ImagePathSep, '', '-Application-', 24, 322, 189, 20, SKAERO_ACTIVECAPTION, 1, 0, Center, 20, '', false); // Close IconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_Close.ico'; PopUpMenu.AddButton(WinHandle, IDM_CLOSE, ImagePathSel, IconPath, 'Close', 24, 342, 189, 20, SKAERO_POPMENUHILITE, 1, 0, Left, 20, 'Bye, Bye'); end; |
AW: Automatisierung
Zeig doch mal die Stelle, wo du CreateMyPopupMenu aufrufst. (Ist es eigentlich gewollt, dass zwar WinHandle übergeben, aber auf das globale MainHandle zugegriffen wird?)
Ich nehme an, dass geschieht in der Botschaftsbehandlung für WM_RBUTTONDOWN bzw -UP? |
AW: Automatisierung
Zitat:
Main WinProc.
Delphi-Quellcode:
WM_NCRBUTTONDOWN:
begin if gPMenu.bPopupMenu then begin gPMenu.bPopupMenu := false; PopUpMenu.DestroyWindow; end; CreatePopupMenu(Prop.MainHandle); GetCursorPos(P); GetWindowRect(gPMenu.PopUpMenu, rc); ClientToScreen(gPMenu.PopUpMenu, P); PopUpMenu.MoveWindow(gPMenu.PopUpMenu, P.X, (P.Y - rc.Bottom), rc.Right, rc.Bottom); PopupMenu.Show; while GetMessage(_Msg, 0, 0, 0) do begin TranslateMessage(_Msg); DispatchMessage(_Msg); end; if OnExit then PostMessage(WinHandle, WM_DESTROY, 0, 0); end;
Delphi-Quellcode:
MovieProc
WM_NCLBUTTONDOWN:
begin IsMoving := true; if gPMenu.bPopupMenu then begin PopUpMenu.DestroyWindow; gPMenu.bPopupMenu := false; end; end;
Delphi-Quellcode:
WM_RBUTTONDOWN:
SendMessageW(Prop.MainHandle, WM_NCRBUTTONDOWN, wP, LP); WM_LBUTTONDOWN: SendMessageW(Prop.MainHandle, WM_NCLBUTTONDOWN, wP, LP); Zitat:
gruss |
AW: Automatisierung
Zitat:
Delphi-Quellcode:
procedure CreateMyPopUpMenu(WinHandle: HWND);
begin // ... gPMenu.hPopUpHandle := PopUpMenu.CreatePopUpMenu(MainHandle); |
AW: Automatisierung
Zitat:
Nein das soll nicht so sein habe es behoben. Danke Auch in WM_NCRBUTTONDOWN: gruss |
AW: Automatisierung
Leicht OT: Codereviews sind schon geil! Wäre es nicht schön/sinnvoll ein entsprechendes Unterforum zu haben? ICh würde da auch ein bis zwei Dinge reinstellen können 8-).
Sherlock |
AW: Automatisierung
Habe es jetzt erst mal noch etwas angepasst damit es sich mehr an das normale Menu orientiert.
Delphi-Quellcode:
gruss
procedure AppendMenu(WinHandle: HWND);
var Enabled: BOOL; Color: COLORREF; begin // Aktiven Status prüfen und Farbe zuweisen Enabled := (KVideo_GetPlayerState <> psNotReady); if Enabled then Color := SKAERO_POPMENUHILITE else Color := $FF737373; if gPMenu.hPopUpHandle <> 0 then begin // About PopUpMenu.ItemIconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_About.ico'; PopUpMenu.ItemToolTip := 'Oops...' + CHR(13) + 'Are they in the wrong place?'; PopUpMenu.ItemHiliteColor := SKAERO_POPMENUHILITE; PopUpMenu.ItemTextAlligment := Left; PopUpMenu.ItemTop := 2; PopUpMenu.AppendMenu(PopUpMenu.Handle, MF_OWNERDRAW, IDM_About, 'About'); // Seperator PopUpMenu.ItemHiliteColor := SKAERO_ACTIVECAPTION; PopUpMenu.ItemTextAlligment := Center; PopUpMenu.ItemEnabled := False; PopUpMenu.ItemTop := 22; PopUpMenu.AppendMenu(PopUpMenu.Handle, MF_OWNERDRAW or MF_SEPARATOR, IDM_SEPERATOR, '-Appearance-'); // Skins PopUpMenu.ItemIconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_SkinFolder.ico'; PopUpMenu.ItemHiliteColor := SKAERO_POPMENUHILITE; PopUpMenu.ItemTextAlligment := Left; PopUpMenu.ItemTop := 42; PopUpMenu.AppendMenu(PopUpMenu.Handle, MF_OWNERDRAW or MF_POPUP, IDM_SKIN, 'Skins'); // Seperator PopUpMenu.ItemHiliteColor := SKAERO_ACTIVECAPTION; PopUpMenu.ItemTextAlligment := Center; PopUpMenu.ItemEnabled := False; PopUpMenu.ItemTop := 62; PopUpMenu.AppendMenu(PopUpMenu.Handle, MF_OWNERDRAW or MF_SEPARATOR, IDM_SEPERATOR1, '-VideoFilter-'); // Filter PopUpMenu.ItemIconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_Filter.ico'; PopUpMenu.ItemHiliteColor := SKAERO_POPMENUHILITE; PopUpMenu.ItemTextAlligment := Left; PopUpMenu.ItemTop := 82; PopUpMenu.AppendMenu(PopUpMenu.Handle, MF_OWNERDRAW or MF_POPUP, IDM_FILTER, 'Filter'); // LAV Filter Configuration PopUpMenu.ItemIconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_Filter.ico'; PopUpMenu.ItemHiliteColor := Color; PopUpMenu.ItemTextAlligment := Left; PopUpMenu.ItemTop := 102; PopUpMenu.ItemEnabled := Enabled; PopUpMenu.AppendMenu(PopUpMenu.Handle, MF_OWNERDRAW or MF_POPUP, IDM_LAVFILTERCONFIG, 'LAV Filter Configuration'); // Seperator PopUpMenu.ItemHiliteColor := SKAERO_ACTIVECAPTION; PopUpMenu.ItemTextAlligment := Center; PopUpMenu.ItemEnabled := False; PopUpMenu.ItemTop := 122; PopUpMenu.AppendMenu(PopUpMenu.Handle, MF_OWNERDRAW or MF_SEPARATOR, IDM_SEPERATOR2, '-File Dependencies-'); // Add File PopUpMenu.ItemIconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_File.ico'; PopUpMenu.ItemHiliteColor := SKAERO_POPMENUHILITE; PopUpMenu.ItemTextAlligment := Left; PopUpMenu.ItemTop := 142; PopUpMenu.AppendMenu(PopUpMenu.Handle, MF_OWNERDRAW, IDM_ADDFILE, 'Add File'); // Seperator PopUpMenu.ItemHiliteColor := SKAERO_ACTIVECAPTION; PopUpMenu.ItemTextAlligment := Center; PopUpMenu.ItemEnabled := False; PopUpMenu.ItemTop := 162; PopUpMenu.AppendMenu(PopUpMenu.Handle, MF_OWNERDRAW or MF_SEPARATOR, IDM_SEPERATOR3, '-Options-'); // Settings PopUpMenu.ItemIconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_Option.ico'; PopUpMenu.ItemHiliteColor := SKAERO_POPMENUHILITE; PopUpMenu.ItemTextAlligment := Left; PopUpMenu.ItemTop := 182; PopUpMenu.AppendMenu(PopUpMenu.Handle, MF_OWNERDRAW or MF_POPUP, IDM_OPTION, 'Settings'); // SubTitle Config PopUpMenu.ItemIconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_SubTitlecfg.ico'; PopUpMenu.ItemHiliteColor := Color; PopUpMenu.ItemTextAlligment := Left; PopUpMenu.ItemEnabled := Enabled; PopUpMenu.ItemTop := 202; PopUpMenu.AppendMenu(PopUpMenu.Handle, MF_OWNERDRAW, IDM_SUBTITLECONFIG, 'SubTitle Config'); // Show MediaFile Property if (KVideo_MediaInfoServiceReady) then begin if not(KVideo_GetMediaProperty(aMediaProperty)) then begin Enabled := false; Color := $FF737373; end else begin Enabled := True; Color := SKAERO_POPMENUHILITE; end; end else begin Enabled := false; Color := $FF737373; end; PopUpMenu.ItemIconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_Info.ico'; PopUpMenu.ItemHiliteColor := Color; PopUpMenu.ItemTextAlligment := Left; PopUpMenu.ItemEnabled := Enabled; PopUpMenu.ItemTop := 222; PopUpMenu.AppendMenu(PopUpMenu.Handle, MF_OWNERDRAW, IDM_MEDIAFILEPROPERTYS, 'Show MediaFile Property'); // Select Video Track if (aMediaProperty.NumVideoStream = 0) then begin Enabled := false; Color := $FF737373; end else begin Enabled := True; Color := SKAERO_POPMENUHILITE; end; PopUpMenu.ItemIconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_Video.ico'; PopUpMenu.ItemHiliteColor := Color; PopUpMenu.ItemTextAlligment := Left; PopUpMenu.ItemEnabled := Enabled; PopUpMenu.ItemTop := 242; PopUpMenu.AppendMenu(PopUpMenu.Handle, MF_OWNERDRAW or MF_POPUP, IDM_VIDEOSTREAM, 'Select Video Track'); // Select Audio Track if (aMediaProperty.NumAudioStream = 0) then begin Enabled := false; Color := $FF737373; end else begin Enabled := True; Color := SKAERO_POPMENUHILITE; end; PopUpMenu.ItemIconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_Audio.ico'; PopUpMenu.ItemHiliteColor := Color; PopUpMenu.ItemTextAlligment := Left; PopUpMenu.ItemEnabled := Enabled; PopUpMenu.ItemTop := 262; PopUpMenu.AppendMenu(PopUpMenu.Handle, MF_OWNERDRAW or MF_POPUP, IDM_AUDIOSTREAM, 'Select Audio Track'); // Select SubTitle Track if (aMediaProperty.NumSubTitleStream = 0) then begin Enabled := false; Color := $FF737373; end else begin Enabled := True; Color := SKAERO_POPMENUHILITE; end; PopUpMenu.ItemIconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_SubTitle.ico'; PopUpMenu.ItemHiliteColor := Color; PopUpMenu.ItemTextAlligment := Left; PopUpMenu.ItemEnabled := Enabled; PopUpMenu.ItemTop := 282; PopUpMenu.AppendMenu(PopUpMenu.Handle, MF_OWNERDRAW or MF_POPUP, IDM_SUBTITLETRACK, 'Select SubTitle Track'); // Chapter if (aMediaProperty.NumChapter = 0) then begin Enabled := false; Color := $FF737373; end else begin Enabled := True; Color := SKAERO_POPMENUHILITE; end; PopUpMenu.ItemIconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_Chapter.ico'; PopUpMenu.ItemHiliteColor := Color; PopUpMenu.ItemTextAlligment := Left; PopUpMenu.ItemEnabled := Enabled; PopUpMenu.ItemTop := 302; PopUpMenu.AppendMenu(PopUpMenu.Handle, MF_OWNERDRAW or MF_POPUP, IDM_CHAPTER, 'Chapter'); // Seperator PopUpMenu.ItemHiliteColor := SKAERO_ACTIVECAPTION; PopUpMenu.ItemTextAlligment := Center; PopUpMenu.ItemEnabled := False; PopUpMenu.ItemTop := 322; PopUpMenu.AppendMenu(PopUpMenu.Handle, MF_OWNERDRAW or MF_SEPARATOR, IDM_SEPERATOR4, '-Application-'); // Close PopUpMenu.ItemIconPath := SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_Close.ico'; PopUpMenu.ItemToolTip := 'Bye, Bye'; PopUpMenu.ItemHiliteColor := SKAERO_POPMENUHILITE; PopUpMenu.ItemTextAlligment := Left; PopUpMenu.ItemTop := 342; PopUpMenu.AppendMenu(PopUpMenu.Handle, MF_OWNERDRAW, IDM_CLOSE, 'Close'); end; end; |
AW: Automatisierung
Wenn du die einzelnen Aufrufe in einer Funktion verpackst, schrumpft der Code um ein Vielfaches:
Code ist unvollständig und die Parameter müssen ggf. noch ergänzt werden.
Delphi-Quellcode:
procedure AppendEntry(APopUpMenu, AIconPath, AHiliteColor, ATextAlignment, AEnabled, ATop, ACaption);
begin APopUpMenu.ItemIconPath := AIconPath; APopUpMenu.ItemHiliteColor := AHiliteColor; APopUpMenu.ItemTextAlligment := ATextAlignment; APopUpMenu.ItemEnabled := AEnabled; APopUpMenu.ItemTop := ATop; APopUpMenu.AppendMenu(PopUpMenu.Handle, MF_OWNERDRAW or MF_POPUP, IDM_CHAPTER, ACaption); end; |
AW: Automatisierung
jo könnte man machen
Mache ich aber nicht weil der Kram dann total unleserlich wird. gruss |
AW: Automatisierung
Stimmt, 10 Zeilen Code sind unleserlicher als 50 Zeilen mit immer den selben Aufrufen :thumb:
|
AW: Automatisierung
Zitat:
Das soll leserlich sein?
Delphi-Quellcode:
usw.. Das alles in eine Zeile geklatscht ?
AppendEntry(SKAERO_CONFIG_GetSkinFolder + 'Menu\MEN_About.ico';,'Oops...' + CHR(13) + 'Are they in the wrong place?',SKAERO_POPMENUHILITE,2)
Das ist ja so was von! Lieber 50 Zeilen als alles in einer rein gematscht. stört mich nicht weiter. gruss |
AW: Automatisierung
Lach. Spaghetticode.
Im Ernst: Mach es, wie bra es empfohlen hat. Das was du da produzierst ist "toxischer Code". Merke: Spaghetticode ist giftig :-) |
AW: Automatisierung
Zitat:
Komm mal etwas von deinem hohen Ross herunter. Wie ich es mache liegt in meinem ermessen und das lasse ich mir von dir nicht diktieren. gruss |
AW: Automatisierung
Ach komm schon. Manche von uns wissen schon, wovon sie reden. :-)
![]() ![]() |
AW: Automatisierung
Zitat:
bzw.. deine Stärken in der Angriffslust? Deshalb wohl der Name Tiger im Nick. Also laber mir hier nicht die Taschen voll und komme zum Thema zurück. Wenn du dazu etwas sinnvolles (Manche von uns wissen schon, wovon sie reden) beitragen kannst würde es mich freuen ansonsten vergiss es einfach. Wieder ein fall für meine Ignore Liste. gruss |
AW: Automatisierung
Sinnvoll ist es, den Vorschlag von bra zu befolgen.
Der Code wird kürzer und deutlich weniger fehleranfällig, da sich potenzielle Fehlerquellen auf die Prozedure AppendEntry beschränken und nicht wiederholt im Quelltext gefunden und behoben werden müssen. Es ist Dein gutes Recht, dem Vorschlag nicht zu folgen, aber es ist nicht unbedingt die feine Art, jeden, der eine andere Meinung als Du vertritt, sofort zu unterstellen, er würde Dich angreifen. Es sind lediglich gutgemeinte Ratschläge, die oft aus jahrzehntelanger Erfahrung resultieren. Man kann ihnen folgen, muss es aber nicht. Und zum Thema "Automatisierung" gehören genau solche Verbesserungen dazu, da man das Werkzeug, den Automaten (hier die von bra vorgeschlagene Prozedure) wiederholt verwenden kann. Und genau das ist einer der wesentlichen Gründe der Automatisierung. Schau Dir einfach mal die Automatisierung in der Industrie an: Dort gibt es bestimmte Abläufe (Prozeduren) die nur eine kleine Teilmenge einer Aufgabe immer wieder ausführen und das und sonst nichts anderes können. Davon dann eine ausreichende Anzahl sich ergänzender Verarbeitungsschritte hintereinander und schon läuft die Automatisierung an Anfang bis Ende. Programmierung ist nichts anderes, als eine Abfolge von Verarbeitungsschritten hintereinander zustellen, Wiederholungen in Funktionen / Prozeduren zu kapseln und als Ergebnis eine Abfolge von Verarbeitungsschritten zur Erreichung eines bestimmten Zieles zu bekommen. |
AW: Automatisierung
Zitat:
Zitat:
in welcher Form man das für gute hält. Wenn mir aber jemand mit blöden Sprüchen kommt ala Spagetti Code und ähnlichen (was absolut nicht sachlich ist) stellt das einen angriff gegen meine Person dar wie ihr das auch immer betrachten mögt. Auf so einen Ja SEHR Deutlich gesprochen Klugscheiß kann ich verzichten. Aber ich will mich jetzt nicht wegen solche Kleinigkeiten wie ich in meinem Code die Variablen weiter reiche hier rumstreiten. Zu meinem eigentlichen Problem hatte bisher noch niemand etwas beizutragen.. Damit das hier nicht ausartet und ich eh keine Sachliche Hilfestellung bzg. meiner Frage bekomme kann man diesen Thread bitte schießen bevor das ganze hier noch ausartet. gruss |
AW: Automatisierung
Zitat:
|
AW: Automatisierung
Zitat:
Zitat:
Zitat:
Vielleicht liegt es auch daran, dass ich mir im Laufe der Jahrzehnte eine gewisse "Grundgelassenheit" angeeignet habe, die vieles nicht mehr so eng sieht und bei Aussagen anderer immer erstmal davon ausgeht, dass es nicht bös gemeint ist, auch wenn man es eventuell so auslegen könnte ;-) |
AW: Automatisierung
Zitat:
Fein das du dein Statement auch noch abgegeben hast. Vielleicht besteht ja noch die Hoffnung das der Thread endlich geschlossen wird. Diese blöden Kommentare gehen mir auf den Geist. Oder tobt euch noch was aus, werde das Thema aus meinen Abonnements entfernen dann nerven die Emails wenigsten nicht mehr. gruss |
AW: Automatisierung
Aus irgendeinem Grund driften hauptsächlich deine Threads immer so extrem ab :gruebel: :glaskugel:
Kritik und Verbesserungsvorschläge sind normalerweise nicht böse gemeint und dafür gedacht dir die Möglichkeit zu geben ein besserer Programmierer zu werden. Du beharrst jedes mal nur stur auf deinen Code und empfindest jede gut gemeinte Kritik als persönlichen Angriff. Das führt dazu, dass du unterm Strich nicht besser wirst und immer mehr Leute erst gar nicht mehr versuchen dir bei deinem Problem oder/und dabei ein besserer Programmierer zu werden zu helfen. Und "ein besserer Programmierer werden" meine ich nicht abwertend. Jeder hier im Forum kann immer noch ein besserer Programmierer werden als er ist. |
AW: Automatisierung
Und ganz kurz noch: Der Begriff
![]() Eine weitere Facette des Problems hast Du selbst bemerkt, als Du Deine Frage hier gepostet hast, dieser längliche Code ist einfach unübersichtlich, und relevante Teile nur schwer auszumachen, weil alles in seiner Wiederholung irgendwie relevant ist. Damit wird es umso schwerer sachdienliche Hinweise zu geben, weil man sich erst durch das wirklich umfangreiche Beispiel arbeiten muss. Ein Problem kann in der Regel einfacher erkannt werden, wenn man ein eng umrissenes aber in sich abgeschlossenes Beispiel dazu gibt. Die Vorschläge, den Code zu verkürzen waren sicherlich erste Versuche, und mit etwas Zeit und Geduld bekommt man dann Lösungen, die für alle akzeptabel und verständlich sind. Aber Du mußt zugeben, daß die gleiche Änderung an 20 Stellen durchführen zu müssen, schlechter ist, als besagte Änderung nur einmal machen zu müssen. Und dafür einen etwas komplexeren Funktionsaufruf zu basteln halte ich für einen akzeptablen Preis. Dein Gegenbeispiel muss ja nicht so aussehen, es sollte noch nicht mal so werden, denn für alle die dort verwendeten Strings sollte man eigentlich Konstanten verwenden können, die einen entsprechend knackig kurzen Namen erhalten.
Delphi-Quellcode:
Das ist doch schnucklig und verständlich.
AppendEntry(cMenuAboutIco, rsWrongPlaceMessage, SKAERO_POPMENUHILITE, 2);
Und dann kann man sich endlich Deinem eigentlichen Problem widmen, weil man jetzt den Wald trotz der ganzen Bäume sieht. Sherlock |
AW: Automatisierung
Der Thread wird auf Wunsch des TE geschlossen
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz